ag-grid分组后如何基于父节点聚合值实现结果筛选
你需要调整ag-grid的两项核心配置即可实现按父节点聚合值筛选:
- 首先在网格全局配置中开启 groupAggFiltering 开关,该配置会让筛选逻辑纳入分组父节点的聚合值计算,而非仅检测叶子节点数值
const gridOptions = { // 你的其他原有配置 groupAggFiltering: true } - 然后在对应聚合列的列定义中添加
filterValueGetter,指定筛选时优先读取分组节点的聚合结果:const columnDefs = [ { field: 'gold', aggFunc: 'sum', // 你的原有聚合配置 filter: 'agNumberColumnFilter', filterValueGetter: params => { // 分组父节点取聚合后的值 if (params.node.group) return params.node.aggData.gold; // 叶子节点取原始值 return params.data.gold; }, // 如果你使用的是下拉Set筛选器,需要自定义筛选选项为聚合值的话可加以下参数 filterParams: { values: params => { const allAggValues = []; params.api.forEachNode(node => { if (node.group && node.aggData?.gold) { allAggValues.push(node.aggData.gold); } }); // 去重后返回作为筛选选项 return [...new Set(allAggValues)]; } } }, // 其他列定义 ]
配置完成后数值筛选器即可识别分组的聚合值,你直接设置筛选条件为>10就能过滤出金牌总和大于10的国家分组。
内容的提问来源于stack exchange,提问作者Roberto
相关产品推荐
相关产品推荐

