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

如何配置AG Grid行分组实现数据版本历史时间轴展示

AG Grid 实现无专用分组列的时间轴/审计历史分组效果

你自己摸索的两个配置方向完全正确,只需要补全几个配套配置就能跑通,之前试treeData、masterDetail没达到效果,是因为这两个方案本身的设计目标就和你的需求不匹配,不是你读文档有偏差。

核心实现逻辑

不需要单独定义分组专用列,主分组行、展开后的子行100%复用你现有的columnDefs配置,核心是把主从表的行展开能力和整行分组渲染模式结合,避开三个默认行为的坑:

  • 不要开treeData:treeData依赖固定的节点路径字段,会强制渲染树形缩进列,和你要的效果冲突
  • 不要用纯masterDetail:纯主从表的详情区是独立渲染的子网格,列配置要单独定义,没法和主表共用一套列结构
  • 不要给任何业务列加rowGroup: true:加了之后AG Grid会自动按列值做聚合分组,没法自定义你需要的时间轴父节点结构

最小可复用配置

直接抄核心配置,替换成你自己的业务字段即可:

const gridOptions = {
  // 这里放你原本的业务列定义就行,完全不用改,不需要加任何分组相关配置
  columnDefs: [
    { field: 'operateTime', headerName: '操作时间' },
    { field: 'operatorName', headerName: '操作人' },
    { field: 'operateType', headerName: '操作类型' },
    { field: 'content', headerName: '操作详情' }
  ],
  // 分组基础配置
  groupDisplayType: 'groupRows', // 分组行占整行宽度,不生成单独的分组单元格
  autoGroupColumnDef: undefined, // 关掉自动生成的分组列
  rowGroupPanelShow: 'never', // 隐藏顶部的分组拖拽面板,普通用户不需要感知分组逻辑
  groupDefaultExpanded: 0, // 默认所有分组折叠
  // 配置哪些行是可展开的父分组行
  isRowMaster: (rowData) => {
    // 替换成你自己的判断逻辑:有子历史记录的时间轴节点/父条目才返回true
    return Array.isArray(rowData.historyChildren) && rowData.historyChildren.length > 0;
  },
  // 告诉网格每个父节点的子项数量,正确渲染展开/折叠箭头
  getChildCount: (rowData) => rowData.historyChildren?.length || 0,
  onGridReady: (params) => {
    // 你的原始数据结构参考:父节点是时间轴维度的汇总行,子节点是对应时间段的审计记录
    const originRowData = [
      {
        id: 'group_202406',
        operateTime: '2024年6月',
        operatorName: '',
        operateType: '月度汇总',
        content: '共2条操作记录',
        historyChildren: [
          { operateTime: '2024-06-18 16:22', operatorName: '王某', operateType: '编辑', content: '修改订单配送地址' },
          { operateTime: '2024-06-05 10:07', operatorName: '李某', operateType: '审批', content: '通过采购申请' }
        ]
      }
    ];
    // 监听分组展开事件,展开时把对应子记录注入到网格行流中
    params.api.addEventListener('rowGroupOpened', (e) => {
      if (e.node.expanded && e.node.data?.historyChildren) {
        e.node.setRowChildren(e.node.data.historyChildren);
      }
    });
    params.api.setRowData(originRowData);
  }
};

样式调整提示

如果要区分父分组行和普通子行,直接用getRowStyle回调判断即可,比如给父行加浅灰色背景、加粗字体,和普通行的样式配置逻辑完全一致,不需要单独写分组行的自定义渲染模板。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:06:22