如何获取 ag-grid 的所有行?
Posted
技术标签:
【中文标题】如何获取 ag-grid 的所有行?【英文标题】:How can I get all the rows of ag-grid? 【发布时间】:2018-11-14 18:31:31 【问题描述】:ag-grid 提供了一种使用api.getSelectedRows()
函数获取选定行的方法。并提供了一种使用api.setRowData([])
函数设置所有行的方法。
我正在寻找 getAllRows()
来返回网格中的所有行。我知道有一种方法可以使用 api.forEachNode()
等循环遍历所有行。
有什么办法可以得到整个行数组?
【问题讨论】:
【参考方案1】:我不认为有这样的方法,但你可以自己制作:
getAllRows()
let rowData = [];
this.gridApi.forEachNode(node => rowData.push(node.data));
return rowData;
【讨论】:
我现在也在做同样的事情,但是想知道 ag-grip 是否为此提供了任何内置功能。不过感谢您的建议。 我试图找到一个,所以我至少有 90% 的把握没有这样的东西。我发现的最接近的是,如果您执行 api.getModel(),它会返回一个 InMemoryRowModel,该模型具有 rowsToDisplay 属性。 OP 已经尝试过 'api.forEachNode()' (如原始问题中所述)并期待一个可以返回网格中的行/计数的内置函数/属性【参考方案2】:Ag-grid 没有提供任何方法来做到这一点。你可以在这里查看Accessing Data Ag-grid和Grid Api。
我来宾的原因是因为你可以通过循环来完成,正如你之前提到的。
let items: Array<rows> = [];
this.gridApi.forEachNode(function(node)
items.push(node.data);
);
或者,如果您的 ag-grid 的源是通过角度链接的,则无需遍历网格(假设数据网格没有待处理的更改)
【讨论】:
【参考方案3】:我认为这是最简单的答案。
让 rowsToDisplay = params.api.getModel();
【讨论】:
【参考方案4】:这就是我从网格 API 获取 rowData 的方式:
api.getModel().gridOptionsWrapper.gridOptions.rowData
很多方法的返回对象中都包含gridOptionsWrapper
,因此您不一定非要使用getModel()
。
【讨论】:
在这种情况下,您将获得 rowData 的初始值,但不会更新,例如,如果删除了某些行。【参考方案5】:我想知道同样的事情,发现不能简单地获取所有行很烦人。在我的情况下,我需要在所有行上翻转一个标志,其中指示器设置在包含网格的组件之外,所以我做了以下操作。这是用于 React 应用程序的 TypeScript。
gridApi!.selectAll();
const rows = gridApi!.getSelectedRows();
rows.forEach(row =>
row.coverageAction = this.props.isIndicatorChecked;
);
gridApi!.setRowData(rows);
【讨论】:
以上是关于如何获取 ag-grid 的所有行?的主要内容,如果未能解决你的问题,请参考以下文章
如何在ag-grid Angular中获取其他列单元格但同一行的值?