【发布时间】:2018-11-14 18:31:31
【问题描述】:
ag-grid 提供了一种使用api.getSelectedRows() 函数获取选定行的方法。并提供了一种使用api.setRowData([]) 函数设置所有行的方法。
我正在寻找 getAllRows() 来返回网格中的所有行。我知道有一种方法可以使用 api.forEachNode() 等循环遍历所有行。
有什么办法可以得到整个行数组?
【问题讨论】:
ag-grid 提供了一种使用api.getSelectedRows() 函数获取选定行的方法。并提供了一种使用api.setRowData([]) 函数设置所有行的方法。
我正在寻找 getAllRows() 来返回网格中的所有行。我知道有一种方法可以使用 api.forEachNode() 等循环遍历所有行。
有什么办法可以得到整个行数组?
【问题讨论】:
我不认为有这样的方法,但你可以自己制作:
getAllRows() {
let rowData = [];
this.gridApi.forEachNode(node => rowData.push(node.data));
return rowData;
}
【讨论】:
Ag-grid 没有提供任何方法来做到这一点。你可以在这里查看Accessing Data Ag-grid和Grid Api。
我来宾的原因是因为你可以通过循环来完成,正如你之前提到的。
let items: Array<rows> = [];
this.gridApi.forEachNode(function(node) {
items.push(node.data);
});
或者,如果您的 ag-grid 的源是通过角度链接的,则无需遍历网格(假设数据网格没有待处理的更改)
【讨论】:
我认为这是最简单的答案。
让 {rowsToDisplay} = params.api.getModel();
【讨论】:
这就是我从网格 API 获取 rowData 的方式:
api.getModel().gridOptionsWrapper.gridOptions.rowData
很多方法的返回对象中都包含gridOptionsWrapper,因此您不一定非要使用getModel()。
【讨论】:
我想知道同样的事情,发现不能简单地获取所有行很烦人。在我的情况下,我需要在所有行上翻转一个标志,其中指示器设置在包含网格的组件之外,所以我做了以下操作。这是用于 React 应用程序的 TypeScript。
gridApi!.selectAll();
const rows = gridApi!.getSelectedRows();
rows.forEach(row => {
row.coverageAction = this.props.isIndicatorChecked;
});
gridApi!.setRowData(rows);
【讨论】: