如何获取ag-grid的所有行?

问题描述 投票:0回答:9

ag-grid 提供了一种使用

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

angular5 ag-grid
9个回答
47
投票

api.forEachNode()



13
投票
getAllRows() { let rowData = []; this.gridApi.forEachNode(node => rowData.push(node.data)); return rowData; }

getRenderedNodes

注意:这只会检索 
rendered

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

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


6
投票

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


6
投票
访问数据Ag-grid

和此处Grid Api 我猜原因是因为你可以通过循环来完成它,正如你之前提到的。

gridOptions.api.getRenderedNodes()

或者,如果您的 ag-grid 的源是通过 Angular 链接的,则无需循环网格(假设数据网格没有待处理的更改)


3
投票
更新2023-05-27:

正如对此答案的评论所指出的,我最初给出的答案是不正确的,特别是对于最新版本的AG Grid,它甚至没有 let items: Array<rows> = []; this.gridApi.forEachNode(function(node) { items.push(node.data); });

循环遍历

gridOptionsWrapper

并手动构建数据数组似乎是最好的选择。


这就是我从网格 API 获取 rowData 的方式:

api.forEachNode()

很多方法的返回对象中都包含 
api.getModel().gridOptionsWrapper.gridOptions.rowData

,因此您不一定必须使用

gridOptionsWrapper
    


1
投票
这里可以显示所有选中的节点

**`Try This:`**

对于SSR

const rowsToDisplay = api?.getRenderedNodes()?.map(node => node?.data)



0
投票

const { selectAll = false, toggledNodes = [] } = params.api?.getServerSideSelectionState() || {};



0
投票

getAllRows() { let allRows = []; this.gridApi.forEachNodeAfterFilter((rowNode) => allRows.push(rowNode)); return allRows; }



-1
投票

this.gridOptions.rowData

© www.soinside.com 2019 - 2024. All rights reserved.