Frontmatter
| id | 9488 |
| title | Grid Multi-Body: SubGrid Row Pooling & Vertical Sync Refactoring |
| state | Closed |
| labels | enhancementaigrid |
| assignees | tobiu |
| createdAt | Mar 16, 2026, 7:15 PM |
| updatedAt | Mar 31, 2026, 3:16 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9488 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 9486 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Mar 31, 2026, 3:16 PM |
Grid Multi-Body: SubGrid Row Pooling & Vertical Sync Refactoring
Closedenhancementaigrid
tobiu added parent issue #9486 on Mar 16, 2026, 7:15 PM
tobiu assigned to @tobiu on Mar 17, 2026, 7:59 PM

tobiu
Mar 31, 2026, 3:16 PM
Resolved: Finalized Grid Multi-Body Row Pooling & Vertical Sync. The ScrollManager now uses the centralized body wrapper for vertical scrolling, preventing desync across multiple split bodies. GridRowScrollPinning logic was also updated to listen to the new wrapper.
tobiu closed this issue on Mar 31, 2026, 3:16 PM
Phase 3 of the Multi-Body Epic (#9486).
Currently,
Neo.grid.Bodyassumes it is the sole render target for the grid, handling its own fullstorerange calculations andscrollManagerevents.In the Multi-Body architecture, the
Bodycomponent must become a "SubGrid".Requirements:
1. Vertical Sync Overhaul:
scrollTopvalue comes from the outer wrapper (neo-grid-body-wrapper).ScrollManagermust be updated to listen to this wrapper, not the individual bodies.ScrollManager(or a centralBodyManagerinsideContainer) must calculate thestartIndexandendIndexof the visible rows once.2. Synchronized Rendering (
createViewData):start,center,end) must not calculate their ownstartIndex/endIndex.recordIdto the same physical pool index, ensuring they receive the identicaltranslateYoffset to stay vertically aligned.3. Component Refactoring (Isolated Pooling):
grid.Bodythat currently assumes it owns the vertical scrollbar.Containerto drive thecreateViewDatacycle externally for all active bodies simultaneously.Rowinstances based exclusively on its specific column collection (Left, Center, or Right).