The client half of single-level, server-side row grouping.
The page of group rows comes from useServerDataSource; this hook
owns what happens below them. Opening a group asks the data source for that
group's rows with groupKeys: [key], a block at a time, and splices them in
under the group row. The result is one flat list, so the fixed-height
virtualization of useVirtualRows works unchanged.
DataGrid uses this internally; call it directly only when building a
custom surface on the same data contract.
Like the page fetch, every group fetch carries an AbortController, and a
generation counter drops any response that arrives after the query changed,
so rows fetched under an old sort or filter are never spliced into the new
result. Any change to the query closes every group.
The client half of single-level, server-side row grouping.
The page of group rows comes from useServerDataSource; this hook owns what happens below them. Opening a group asks the data source for that group's rows with
groupKeys: [key], a block at a time, and splices them in under the group row. The result is one flat list, so the fixed-height virtualization of useVirtualRows works unchanged.DataGrid uses this internally; call it directly only when building a custom surface on the same data contract.