Smart UI Components & Libraries – Grid, Scheduler, Gantt, Kanban for Angular, React, Next.js, Vue, Blazor, JavaScript › Forums › Data Grid › Data Table Pagination Logic
- This topic has 1 reply, 2 voices, and was last updated 5 months ago by Markov. 
- 
		AuthorPosts
- 
		
			
				
June 1, 2025 at 2:25 pm #112554shridb ParticipantDear Support Team , I need your help for Grid pagination, sorting, filter & order at Java Side using React JS Code. This similar feature looking also for Dropdown list & Combo Box. Thanks Shridhar June 2, 2025 at 11:24 am #112559Markov KeymasterHi, You can try this: import React, { useRef, useEffect } from "react"; import { Grid } from "smart-webcomponents-react/grid"; import "smart-webcomponents-react/source/styles/smart.default.css"; function App() { const gridRef = useRef(null); useEffect(() => { const dataAdapter = new window.Smart.DataAdapter({ virtualDataSourceLength: 1000, // Total number of records (can be updated dynamically) virtualDataSource: function (resultCallbackFunction, details) { const { pageIndex, pageSize, sortColumns } = details; const sort = sortColumns.map(sc => <code>${sc.dataField},${sc.sortOrder}</code>).join(';'); fetch(<code>/users?page=${pageIndex}&size=${pageSize}&sort=${sort}</code>) .then(response => response.json()) .then(data => { resultCallbackFunction({ dataSource: data.content, virtualDataSourceLength: data.totalElements }); }); }, dataFields: [ 'id: number', 'name: string', 'age: number' ] }); gridRef.current.dataSource = dataAdapter; }, []); return ( <Grid ref={gridRef} paging={{ enabled: true, pageSize: 10 }} sorting={{ enabled: true }} columns={[ { label: 'ID', dataField: 'id', width: 50 }, { label: 'Name', dataField: 'name' }, { label: 'Age', dataField: 'age', width: 80 } ]} /> ); } User.javaimport jakarta.persistence.*; @Entity 
 public class User {
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private Long id;private String name; 
 private int age;public User() {} public User(String name, int age) { 
 this.name = name;
 this.age = age;
 }// Getters and Setters 
 public Long getId() { return id; }
 public String getName() { return name; }
 public int getAge() { return age; }public void setId(Long id) { this.id = id; } 
 public void setName(String name) { this.name = name; }
 public void setAge(int age) { this.age = age; }
 }`UserRepository.java import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long> {}UserController.java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.*; import org.springframework.web.bind.annotation.*; import java.util.*; @RestController @RequestMapping("/users") @CrossOrigin(origins = "*") public class UserController { @Autowired private UserRepository repo; @GetMapping public Map<String, Object> getUsers( @RequestParam int page, @RequestParam int size, @RequestParam(required = false, defaultValue = "id,asc") String sort ) { String[] parts = sort.split(","); Sort.Direction direction = Sort.Direction.fromString(parts[1]); String field = parts[0]; Pageable pageable = PageRequest.of(page, size, Sort.by(direction, field)); Page<User> result = repo.findAll(pageable); Map<String, Object> response = new HashMap<>(); response.put("content", result.getContent()); response.put("totalElements", result.getTotalElements()); return response; } }DataSeeder.java import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; import org.springframework.beans.factory.annotation.Autowired; @Component public class DataSeeder implements CommandLineRunner { @Autowired private UserRepository repo; @Override public void run(String... args) { if (repo.count() == 0) { for (int i = 1; i <= 100; i++) { repo.save(new User("User " + i, 20 + (i % 10))); } } } }DemoApplication.java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Hope this helps. Best regards, 
 MarkovSmart UI Team 
 https://www.htmlelements.com/
- 
		AuthorPosts
- You must be logged in to reply to this topic.