You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

2024年AG Grid Community快速筛选启用及弃用函数替代方案咨询

AG Grid setQuickFilter 弃用后的替代实现方案

首先明确:rowNode.setSelected(value) 是用来选中行的,和快速筛选功能完全无关,你大概率是看错了弃用提示。AG Grid 中弃用的是rowNode 上的 setQuickFilter 方法,而 gridApi 提供的 setQuickFilter 仍然是实现全局快速筛选的标准方式(除非你使用的是非常老旧的版本)。

1. 基础全局快速筛选实现(推荐)

先确保在网格初始化时获取 gridApi 实例,之后直接调用其 setQuickFilter 方法即可:

// 全局保存 gridApi 实例
let gridApi;

// 网格初始化完成时获取 api
const onGridReady = (params) => {
  gridApi = params.api;
};

// 快速筛选函数
const applyQuickFilter = (filterText) => {
  gridApi.setQuickFilter(filterText);
};

React 环境下的完整组件示例:

import { AgGridReact } from 'ag-grid-react';
import 'ag-grid-community/styles/ag-grid.css';
import 'ag-grid-community/styles/ag-theme-alpine.css';

export default function FilterableGrid() {
  let gridApi;

  const onGridReady = (params) => {
    gridApi = params.api;
  };

  const handleFilterInputChange = (e) => {
    gridApi.setQuickFilter(e.target.value.trim());
  };

  // 列定义与行数据示例
  const columnDefs = [
    { field: 'make', sortable: true },
    { field: 'model', sortable: true },
    { field: 'price', sortable: true, filter: 'agNumberColumnFilter' }
  ];

  const rowData = [
    { make: 'Toyota', model: 'Celica', price: 35000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Porsche', model: 'Boxster', price: 72000 },
    { make: 'Honda', model: 'Civic', price: 28000 }
  ];

  return (
    <div>
      <input 
        type="text" 
        placeholder="输入关键词快速筛选..." 
        onChange={handleFilterInputChange}
        style={{ marginBottom: '10px', padding: '6px' }}
      />
      <div className="ag-theme-alpine" style={{ height: 400, width: 600 }}>
        <AgGridReact
          columnDefs={columnDefs}
          rowData={rowData}
          onGridReady={onGridReady}
        />
      </div>
    </div>
  );
}

2. 自定义行级筛选(特殊场景)

如果需要针对单个行节点实现自定义筛选逻辑(而非全局快速筛选),可以通过 gridApi.forEachNode 遍历所有行节点,手动设置行的可见性:

const applyCustomRowFilter = (filterText) => {
  const lowerCaseFilter = filterText.toLowerCase();
  gridApi.forEachNode(rowNode => {
    // 自定义匹配逻辑,示例:检查品牌或型号是否包含关键词
    const isMatch = 
      rowNode.data.make.toLowerCase().includes(lowerCaseFilter) ||
      rowNode.data.model.toLowerCase().includes(lowerCaseFilter);
    // 设置行节点可见性
    rowNode.setRowVisible(isMatch);
  });
  // 刷新网格视图
  gridApi.refreshView();
};

关于弃用的补充说明

AG Grid 弃用 rowNode.setQuickFilter 是因为该方法需要逐个操作行节点,性能远不如全局的 gridApi.setQuickFilter(后者会利用网格的内置筛选优化)。如果你的 gridApi.setQuickFilter 也被标记弃用,建议升级到最新版本的 AG Grid Community,该方法在当前稳定版中是完全可用的。

内容的提问来源于stack exchange,提问作者Jaimierl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:10:24