Manual processing
Enable manualFiltering, manualSorting, and manualPagination. Send state changes to the API, then call setData(rows, total, summaries).
Managed data source
The data-source controller adds debounce, AbortSignal cancellation, cache control, stale-response protection, loading status, and refresh/invalidate methods.
Cursors and facets
Use opaque cursor controllers for infinite loading and loadFacets for remote SearchPanes. Superseded requests are cancelled automatically.
- Authenticate every request and authorize tenant/query scope on the server.
- Treat cursor values as opaque and sign them when exposed to clients.
- Destroy observers and data-source controllers with the owning view.
const remote = createDataTableDataSourceController({
table: table.core,
debounceMs: 200,
async dataSource({ state, signal }) {
const response = await fetch('/api/people?' + toQuery(state), { signal });
return response.json(); // { rows, rowCount, summaryValues }
}
});