如何获取 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 的所有行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React AG-grid 中获取固定的行数据

Ag-grid 表中实际行数

如何在ag-grid Angular中获取其他列单元格但同一行的值?

Ag-Grid:如何在不选择行的情况下单击行或该行的任何单元格突出显示特定行?

如何获取和设置 ag-grid 状态?

如何在加载数据时隐藏 Ag-grid 中的所有行