我怎样才能获得所有行的ag-grid?

San*_*mar 6 ag-grid angular5

ag-grid提供了一种使用api.getSelectedRows()函数获取选定行的方法。并提供一种使用api.setRowData([])功能设置所有行的方法。我正在寻找某种东西getAllRows()来返回网格中的所有行。我知道有一种方法可以使用api.forEachNode()etc 遍历所有行。有什么办法可以获取整个行数组?

Ala*_*hel 14

你正在寻找getRenderedNodes

gridOptions.api.getRenderedNodes()
Run Code Online (Sandbox Code Playgroud)

注意:这只会检索呈现的行。如果您使用行虚拟化,这意味着只有视口中的行才会出现在 DOM 中,并且只会返回这些行。根据函数文档:

检索渲染的节点。由于虚拟化,这将仅包含当前可见的行和缓冲区中的行。


Mic*_*rén 6

我认为没有这种方法,但是您可以自己制作:

getAllRows() {
  let rowData = [];
  this.gridApi.forEachNode(node => rowData.push(node.data));
  return rowData;
}
Run Code Online (Sandbox Code Playgroud)


小智 6

我认为这是最简单的答案。

让 {rowsToDisplay} = params.api.getModel();


Que*_*zel 5

Ag-grid 不提供任何方法来做到这一点。您可以在此处查看访问数据 Ag-grid和在此处查看Grid Api

我说原因是因为你可以通过循环来完成,正如你之前提到的。

let items: Array<rows> = [];
this.gridApi.forEachNode(function(node) { 
    items.push(node.data);
});
Run Code Online (Sandbox Code Playgroud)

或者,如果您的 ag-grid 的源是通过 angular 链接的,则无需在网格上循环(假设数据网格没有挂起的更改)