Grid views backed by a cursor or sub-cursor now load additional rows automatically as the user scrolls toward the bottom of the current page. An intersection observer on the last visible row triggers the next-page fetch; rows append to the existing grid state without clearing the view. Sub-cursors — nested result sets that render inside an expanded parent row — use the same mechanism, eliminating a separate pagination control for inline detail sets.
Implementation details
- Page-size configuration respected. Each scroll trigger fetches exactly one page at the cursor's configured page size; large page sizes do not cause more aggressive prefetching.
- Unbounded row count handled. When the server cannot report the total row count — common for streaming cursors — the scroll check treats the count as unbounded and continues fetching until the server returns an empty page rather than throwing on a null value.
- Sub-cursor parity. Expanding a parent row with a large sub-cursor uses the same scroll trigger rather than a separate pagination control, so the interaction model is consistent at every nesting depth.
Infinite scroll activates for cursor-backed grids by default. Grids configured with explicit pagination controls are not affected. The initial cell-selection focus that previously fired before the grid mounted is deferred to a post-mount task, preventing layout thrash during the initial scroll-position calculation.