获取数据源中的行索引



在 ag-grid 中,如何从数据数组中检索行的索引,而不是.rowIndex属性,因为在应用排序和过滤时,rowIndex属性可能会更改。 数据结构没有标识符,因此在迭代数据时无法查找 Id。 (参见下面的迈克·史密斯的例子(。 根据下面的示例,当应用排序时,如何获取" 原始索引"属性?

我需要能够按照node.index而不是node.rowIndex的方式做一些事情。

// Data I provide ag-grid
const unsortedData = [
{firstName: 'Mike', lastName: 'Smith'}, // original index 0, rowIndex 0
{firstName: 'Steve', lastName: 'Jones'}, // original index 1, rowIndex 1
{firstName: 'Mike', lastName: 'Smith'}, // original index 2, rowIndex 2
{firstName: 'John', lastName: 'Johnson'} // original index 3, rowIndex 3
];
// Example of internally sorted data by ag-grid.  IE `rowsAfterSort`. 
const sortedData = [
{firstName: 'John', lastName: 'Johnson'}, // original index 3, rowIndex 0
{firstName: 'Mike', lastName: 'Smith'}, // original index 0, rowIndex 1
{firstName: 'Mike', lastName: 'Smith'}, // original index 2, rowIndex 2
{firstName: 'Steve', lastName: 'Jones'} // original index 1, rowIndex 3
];
// Callback function from ag-grid
function myAgGridCallback(params){
// var realIndex = params.node.rowIndex;  //rowIndex changes when sorting is applied
// var realIndex = params.node.index; // I need something like this.  index does not exist.
// Do stuff with realIndex
}

解决此问题的一个好方法是在每个元素上插入一个唯一标识符,这将导致数据集之间的牢固联系。

既然你说这是不可能的,你可以使用 ag-grid 生成的 ID,它也将作为数据的索引。

正如农业网格文档所说:

获取rowNode的最简单方法是通过其ID。该 ID 是 由您使用网格回调getRowNodeId((提供,或生成 通过网格使用内部序列。

因此,在您的情况下,解决方案之一是使用getDisplayedRowAtIndex方法。在第二个示例中,对数据进行排序后,您可以执行以下操作:

this.gridApi.getDisplayedRowAtIndex(0).id
// where 0 is your rowIndex

这将导致值3如您所期望的那样。基本上,对于您访问的每个节点,它将具有id属性,它将用作原始数组的索引。
根据您的应用程序,您还可以使用forEachNode文档描述的方法:

遍历网格中的每个节点(行(并调用回调 对于每个节点。这类似于 Javascript 数组。这是为每个节点调用的,忽略任何 在网格内应用的筛选或排序。如果使用无限行 模型,然后为页面缓存中加载的每个页面调用。

最新更新