如何获取ag-Grid中过滤的行数?

How to get the number of filtered rows in ag-Grid?

我有一个带过滤选项的ag-Grid

如何在不使用 forEachNodeAfterFilter 回调的情况下获取过滤的行数?

我只想在有筛选行的情况下启用按钮,我不想每次都在后台执行foreach循环。

gridOptions.api.getModel().rootNode.childrenAfterFilter.length

你应该看看 rootNode 下还有什么可用的,有一些数组可能对你有用

您可能正在寻找的是:

gridOptions.api.getDisplayedRowCount()

过滤后的实际行数就是显示的行数

使用onFilterChanged() 访问过滤后的行,或过滤+选择的行。传递给 onFilterChanged() 的事件可以像这样使用(Typescript React 中的示例)

(如果您需要筛选的数量,只需使用 ev.api.rowModel.rowsToDisplay.length

onFilterChanged = ev => {
  if (ev?.api?.rowModel?.rowsToDisplay) {
    this.setState({ selectedRows: ev?.api?.rowModel?.rowsToDisplay.filter(node => node.isSelected()) });
  }
};
onFilterChanged(event) { 
 console.log(gridOptions.api.getDisplayedRowCount());
}

在控制台中,计数应该是过滤后的行数。

我们可以通过声明 AgGridReact 的一部分然后使用 gridRef 访问 api

gridRef.current.gridOptions.api.getDisplayedRowCount()

<AgGridReact
    ref={gridRef}
    columnDefs={columnDefs}
    rowData={rowData}
    headerHeight={35}
    rowHeight={35}
    defaultColDef={defaultColDef}
    onGridReady={onGridReady}
    onFilterChanged={()=> setRow(gridRef.current.gridOptions.api.getDisplayedRowCount())}
></AgGridReact>