Context
During the testing of the Grid Multi-Body architecture via Neural Link E2E capabilities, we discovered a core architectural synchronization failure in Neo.selection.grid.RowModel.
In a standard single-body Grid layout, the Selection Model successfully listens to DOM events such as rowClick bindings via me.view.parent.on('rowClick', me.onRowClick, me), where me.view.parent typically represents the overarching orchestrator.
The Problem
When the grid splits into multiple bodies (bodyStart, bodyCenter, bodyEnd), and we instantiate them using Neo.grid.View wrappers:
GridBody.parent explicitly resolves to Neo.grid.View (configured by parentId: me.view.id).
- When a row is clicked inside
body, the internal event fires me.gridContainer.fire(eventName, ...) directly natively targeting the Container.
- However,
RowModel does not listen to gridContainer. It stays rigidly bound to its parent wrapper (Neo.grid.View).
- The
GridView wrapper component does not natively trap or bubble the rowClick event.
Because of this paradigm disconnect, the RowModel across sub-grids fails to detect row clicks, leaving the selection state (selectedRows) out of sync preventing rows from highlighting globally.
Proposed Architecture Fix
- Refactor
Neo.selection.grid.RowModel to bind to me.view.gridContainer || me.view.parent so it natively captures the bubbling rowClick fired directly by GridBody.
- Evaluate if state arrays such as
selectedRows should be delegated upward to the GridContainer levels so all 3 instantiated RowModels reflect single state truth.
Context
During the testing of the Grid Multi-Body architecture via Neural Link E2E capabilities, we discovered a core architectural synchronization failure in
Neo.selection.grid.RowModel.In a standard single-body Grid layout, the Selection Model successfully listens to DOM events such as
rowClickbindings viame.view.parent.on('rowClick', me.onRowClick, me), whereme.view.parenttypically represents the overarching orchestrator.The Problem
When the grid splits into multiple bodies (
bodyStart,bodyCenter,bodyEnd), and we instantiate them usingNeo.grid.Viewwrappers:GridBody.parentexplicitly resolves toNeo.grid.View(configured byparentId: me.view.id).body, the internal event firesme.gridContainer.fire(eventName, ...)directly natively targeting the Container.RowModeldoes not listen togridContainer. It stays rigidly bound to its parent wrapper (Neo.grid.View).GridViewwrapper component does not natively trap or bubble therowClickevent.Because of this paradigm disconnect, the
RowModelacross sub-grids fails to detect row clicks, leaving the selection state (selectedRows) out of sync preventing rows from highlighting globally.Proposed Architecture Fix
Neo.selection.grid.RowModelto bind tome.view.gridContainer || me.view.parentso it natively captures the bubblingrowClickfired directly byGridBody.selectedRowsshould be delegated upward to theGridContainerlevels so all 3 instantiated RowModels reflect single state truth.