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

如何在aggrid中定位最近一次应用筛选条件的列

ag-grid serverSideDataSource 识别最近操作筛选列的实现方案

ag-grid 原生的getRows请求参数不会自带最近操作筛选列的标识,可通过自定义事件监听+追加请求参数的方式实现,具体步骤如下:

  • 第一步:监听筛选变更事件,记录最近操作的列
    通过ag-grid提供的filterModified事件,每次用户修改筛选条件时,将当前操作的列ID存储到变量中:
// 全局/组件内定义变量存储最近操作的筛选列ID
let lastModifiedFilterCol = null;

const gridOptions = {
  // 其余grid配置省略
  onFilterModified: (event) => {
    lastModifiedFilterCol = event.column?.colId || null;
  }
}
  • 第二步:追加自定义参数到接口请求
    在serverSideDataSource的getRows方法中,将存储的最近筛选列ID追加到请求参数中,再发送给后端:
const gridOptions = {
  // 其余grid配置省略
  serverSideDatasource: {
    getRows: (params) => {
      // 构造请求参数,追加自定义字段
      const requestPayload = {
        ...params.request,
        lastModifiedFilterColumn: lastModifiedFilterCol
      };
      // 调用后端接口获取数据
      fetch('/your-data-api', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify(requestPayload)
      }).then(res => res.json()).then(result => {
        params.success({
          rowData: result.rows,
          rowCount: result.totalCount
        });
      });
    }
  }
}
  • 可选方案:给筛选规则追加时间戳标记
    如果不想额外新增顶层请求字段,可以在筛选变更时给对应列的筛选规则加时间戳字段,后端直接取filterModel中时间戳最大的项即可识别最新操作的列:
onFilterModified: (event) => {
  if (!event.column) return;
  const currentColId = event.column.colId;
  const allFilterModel = gridOptions.api.getFilterModel();
  if (allFilterModel[currentColId]) {
    // 给当前修改的筛选规则追加时间戳标记
    allFilterModel[currentColId].lastModifiedAt = Date.now();
    gridOptions.api.setFilterModel(allFilterModel);
  }
}

注意:如果用户触发清空所有筛选的操作,同步将存储的最近筛选列变量置空即可,避免传递无效的历史列标识。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:15:03