在排序的网格中获取 previous/next 行节点
Getting previous/next row node in a sorted grid
我有一个网格,其中默认排序在列上,我在通过添加或减去当前选定的行 ID 来获取 next/previous 行时遇到问题。
这是默认排序的列
{
headerName: "Created",
field: "createdOn",
cellRenderer: (params) => {
return WebModule.Utils.dateFormat(params.value);
},
sort: "desc",
width: 125
},
这是我获取 previous/next 行的逻辑
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) 但实际 rowIndex
of nextRow
将类似于 2245(我在网格中有很多数据)。
所以我最终选择了隐藏在网格深处的一行,而不是实际显示的第 3 行。
当网格为 sorted/filtered 时,我是否需要使用 getRowNode
以外的其他东西?
一种可能的解决方案是使用
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
我最终使用了 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);
无论 sort/filter 选项如何,这确实会获取上一行和下一行。
我有一个网格,其中默认排序在列上,我在通过添加或减去当前选定的行 ID 来获取 next/previous 行时遇到问题。
这是默认排序的列
{
headerName: "Created",
field: "createdOn",
cellRenderer: (params) => {
return WebModule.Utils.dateFormat(params.value);
},
sort: "desc",
width: 125
},
这是我获取 previous/next 行的逻辑
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) 但实际 rowIndex
of nextRow
将类似于 2245(我在网格中有很多数据)。
所以我最终选择了隐藏在网格深处的一行,而不是实际显示的第 3 行。
当网格为 sorted/filtered 时,我是否需要使用 getRowNode
以外的其他东西?
一种可能的解决方案是使用
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
我最终使用了 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);
无论 sort/filter 选项如何,这确实会获取上一行和下一行。