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

AgGrid企业版:基于行分组展开层级显隐列的实现咨询

解决方案:基于分组展开状态动态控制列显示

针对AgGrid企业版SSRM行模型下的分组层级列显示需求,可通过监听分组展开/折叠事件+数据模型更新事件,结合网格节点的层级/分组状态判断,动态控制列的可见性,具体实现如下:

1. 初始列配置:默认隐藏目标列

在列定义中设置Pin Code列默认隐藏,仅在满足条件时显示:

const columnDefs = [
  // 其他分组列与数据列定义
  { field: 'planet', rowGroup: true, hide: true },
  { field: 'continent', rowGroup: true, hide: true },
  { field: 'country', rowGroup: true, hide: true },
  { field: 'state', rowGroup: true, hide: true },
  { field: 'district', rowGroup: true, hide: true },
  // 目标列默认隐藏
  { field: 'pinCode', headerName: 'Pin Code', hide: true }
];

2. 核心判断逻辑:检查是否显示目标层级

编写函数判断当前网格中是否存在District层级的可见行(或是否有State分组被展开):

function shouldShowPinCode(gridApi) {
  const displayedNodes = gridApi.getAllDisplayedNodes();
  // 方式1:通过节点深度判断(假设District层级深度为5,根节点深度0)
  return displayedNodes.some(node => node.level === 5);
  
  // 方式2:通过分组字段判断(判断是否有State分组被展开)
  // return displayedNodes.some(node => node.group && node.field === 'state' && node.expanded);
}

两种方式二选一:方式1更直接(只要有District行可见就显示列),方式2更贴合“展开State才显示”的逻辑。

3. 监听事件并更新列可见性

在网格配置中监听onGroupExpandOrCollapse(分组展开/折叠)和onModelUpdated(SSRM数据加载完成)事件,触发列可见性更新:

const gridOptions = {
  columnDefs,
  rowGroupPanelShow: 'always',
  groupDefaultExpanded: -1, // 默认全部折叠
  serverSideRowModel: true,
  // 分组展开/折叠时更新列状态
  onGroupExpandOrCollapse: (params) => {
    const visible = shouldShowPinCode(params.api);
    params.api.columnApi.setColumnVisible('pinCode', visible);
  },
  // SSRM数据加载完成后重新判断(避免展开分组后数据未加载导致判断错误)
  onModelUpdated: (params) => {
    const visible = shouldShowPinCode(params.api);
    params.api.columnApi.setColumnVisible('pinCode', visible);
  }
};

关键说明

  • 必须监听onModelUpdated:SSRM是异步加载数据,展开分组后数据不会立即出现在网格中,需等数据加载完成(模型更新)后再判断列的显示状态。
  • 节点层级计算:根节点(未分组)深度为0,每多一层分组深度加1,可根据自身分组结构调整node.level的判断值。
  • 多分组场景适配:如果存在多个State分组,只要有一个被展开,Pin Code列就会显示;当所有State分组都折叠时,列自动隐藏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:35:19