OGE logoOGE

Remote Data

Sorting, filtering, searching and paging are all delegated to a (simulated) backend with 250 ms latency. Watch the request log: rapid typing produces a single request thanks to debouncing, and a newer request aborts the stale one.

CustomDataSource CursorDataSource LoadOptions AbortSignal
server-side 250ms latency
No commands to display
Id
First Name
Last Name
Department
City
Salary
0 rows

Request log

  1. #1 GET /api/employees?skip=0&take=12

Cursor-paginated endpoints

Many APIs page with a cursor (?after=… → { items, nextCursor }) and have no offset to jump to. CursorDataSource adapts one to the grid: pair it with infinite scrolling and it walks the cursor chain as you scroll, fetching each page once. The total stays open until the last page arrives; a new sort, filter or search restarts from the first page.

CursorDataSource infinite scrolling
Id
First Name
Department
Salary

Notes

  • LoadOptions is a plain serializable object — post it to a .NET / Node endpoint as-is and return { data, totalCount }.
  • Every option carries an AbortSignal: when the state changes mid-flight, the stale request is aborted and can never overwrite newer data.
  • Filter typing is debounced (filterDebounce, default 300 ms) so one settled interaction equals one request.
  • The header filter's distinct values come from the optional distinct() delegate.