Sorting

Sort rows with sortable columns and the grid.sort API.

Enable sorting on columns, then use header interactions or grid.sort.

Column Setup

columns.ts
const columns: ColumnDef[] = [
{ field: 'name', header: 'Name', width: 220, sortable: true },
{ field: 'age', header: 'Age', width: 100, sortable: true },
{ field: 'email', header: 'Email', width: 260, sortable: true },
];

API

sorting.ts
grid.sort.toggle(0);
grid.sort.apply([{ column: 1, direction: 'desc' }]);
grid.sort.setState([
{ column: 1, direction: 'asc', sortIndex: 0 },
{ column: 0, direction: 'desc', sortIndex: 1 },
]);
const state = grid.sort.getState();
grid.sort.clear();

Events

sort-events.ts
grid.on('sort:beforeSort', (event) => {
console.log(event.sortState);
});
grid.on('sort:change', ({ sortState, previousSortState }) => {
console.log({ sortState, previousSortState });
});
grid.on('sort:afterSort', ({ rowsAffected }) => {
console.log(rowsAffected);
});

Backend Sorting

backend-sorting.ts
const grid = new Grid(container, {
columns,
rowCount: 100000,
colCount: columns.length,
rowHeight: 36,
colWidth: columns.map((column) => column.width ?? 140),
dataMode: 'backend',
onDataRequest: async (request) => fetchRows(request),
});
Info

In backend mode, sort state is included in the canonical request query passed to onDataRequest.