From 994495e4865cb781a347f6d016274ff87d84ebf4 Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Tue, 28 Jul 2026 23:44:19 -0400 Subject: [PATCH] fix: updateRowPositions leaves right-pane row fragments at stale positions --- packages/common/src/core/slickGrid.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/common/src/core/slickGrid.ts b/packages/common/src/core/slickGrid.ts index 46c31047d..01e837cb0 100755 --- a/packages/common/src/core/slickGrid.ts +++ b/packages/common/src/core/slickGrid.ts @@ -5666,12 +5666,18 @@ export class SlickGrid = Column, O e if (this.rowsCache && typeof this.rowsCache === 'object') { Object.keys(this.rowsCache).forEach((row) => { const rowNumber = row ? parseInt(row, 10) : 0; - const rowNode = this.rowsCache[rowNumber].rowNode![0]; - if (this._options.rowTopOffsetRenderType === 'transform') { - rowNode.style.transform = `translateY(${this.getRowTop(rowNumber)}px)`; - } else { - rowNode.style.top = `${this.getRowTop(rowNumber)}px`; // default to `top: {offset}px` - } + // same formula appendRowHtml uses to place rows initially + const top = this.getRowTop(rowNumber) - this.getFrozenRowOffset(rowNumber); + // reposition EVERY fragment of the row: with frozen columns a row has one + // fragment per column pane, and repositioning only rowNode[0] left the + // right-pane fragment at its stale top after a paging-offset jump + this.rowsCache[rowNumber].rowNode!.forEach((rowNode) => { + if (this._options.rowTopOffsetRenderType === 'transform') { + rowNode.style.transform = `translateY(${top}px)`; + } else { + rowNode.style.top = `${top}px`; // default to `top: {offset}px` + } + }); }); } }