JavaScript UI Libraries & Blazor Components Suite – Smart UI › Forums › Data Grid › Data Table Pagination Logic
- This topic has 1 reply, 2 voices, and was last updated 1 week, 6 days ago by
Markov.
-
AuthorPosts
-
June 1, 2025 at 2:25 pm #112554
shridb
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.java
import 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.