获取已排序网格中的上一行/下一行节点



我有一个在列上排序的默认网格,我有问题通过添加或减去当前选择的行ID来获得下一行/前一行。

下面是默认排序

的列
{
headerName: "Created",
field: "createdOn",
cellRenderer: (params) => {
return WebModule.Utils.dateFormat(params.value);
},
sort: "desc",
width: 125
},

这是我获取前一行/下一行的逻辑

class ResultModal {
constructor(params) {
this.params = params
let rowIndex = params.rowIndex;
this.previousRow = params.api.getRowNode(rowIndex - 1);
this.nextRow = params.api.getRowNode(rowIndex + 1);
this.result = params.data;
}
}

我将整个ag-grid params对象传递给一个模态,这样我就可以从模态中的按钮导航网格记录。

问题是,如果我运行上述逻辑,选择第二行,params.rowIndex是1,我得到nextRow与(1+1),但nextRow的实际rowIndex将类似于2245(我在网格中有很多数据)。

所以我最终选择了网格深处的一行,而不是实际显示的第三行。

当网格被排序/过滤时,我需要使用getRowNode以外的东西吗?

我最终使用了api.getDisplayedRowAtIndex()

let node = params.api.getSelectedNodes()[0];
let rowIndex = node.rowIndex;
this.previousRow = params.api.getDisplayedRowAtIndex(rowIndex - 1);
this.nextRow = params.api.getDisplayedRowAtIndex(rowIndex + 1);

无论排序/筛选选项如何,这都将获得前一行和下一行。

一个可能的解决方案是使用

gridOptions.api.forEachNodeAfterFilterAndSort

在显示的行上迭代。注意,回调传递RowNode本身和网格中的行索引。

function forEachNodeAfterFilterAndSort(
callback: (rowNode: RowNode, index: number) => void
): void;

https://www.ag-grid.com/javascript-data-grid/grid-api/reference-rowNodes

相关内容

  • 没有找到相关文章

最新更新