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

如何为Server Side Row Model的中间分组行生成RowId?

如何在AG Grid Server Side Row Model中获取分组行的对应分组字段

要给SSR模式下的分组行生成唯一可确定的ID,核心是通过分组行的层级信息关联到对应的分组字段,以下是几种实用方法:

1. 基于固定分组列顺序匹配层级

如果你的分组列是预先定义好的(比如固定按Status、Category顺序分组),可以直接通过分组行的level属性,对应到分组列数组的索引:

// 预先定义的分组列顺序
const fixedRowGroupCols = ['Status', 'Category'];

const getRowId = (params) => {
  // 判断当前行是分组行
  if (params.node.group) {
    // 用层级取对应的分组字段
    const currentGroupField = fixedRowGroupCols[params.node.level];
    // 结合父分组路径+当前分组值生成唯一ID
    const parentKeyPrefix = params.node.parent ? `${params.node.parent.key}_` : '';
    return `group_${currentGroupField}_${parentKeyPrefix}${params.node.key}`;
  }
  // 普通数据行的ID生成逻辑
  return `data_${params.data.id}`;
};

这种方法简单直接,适合分组列固定的场景,生成的ID格式清晰(比如group_Status_NEW、group_Category_Electronics_Status_IN_PROGRESS),方便后续定位。

2. 动态获取分组列配置

如果分组列是动态调整的(比如用户可以切换分组维度),可以通过AG Grid API的getRowGroupColumns()方法实时获取当前生效的分组列,再结合层级匹配:

const getRowId = (params) => {
  if (params.node.group) {
    // 动态获取当前所有分组列
    const currentRowGroupCols = params.api.getRowGroupColumns();
    // 取当前层级对应的分组字段(注意列定义中用field还是colId,根据你的配置调整)
    const currentGroupField = currentRowGroupCols[params.node.level].field;
    // 用完整分组路径生成ID,确保唯一性
    const fullGroupPath = [...(params.node.path || [])].join('_');
    return `group_${currentGroupField}_${fullGroupPath}`;
  }
  return `data_${params.data.id}`;
};

params.node.path是AG Grid提供的分组路径数组,包含从根分组到当前分组的所有key值,结合分组字段生成的ID能保证全局唯一。

关键注意点

  • 必须先通过params.node.group判断当前行是分组行,避免和普通数据行的ID生成逻辑冲突;
  • 生成的ID建议带上group_前缀,方便后续区分分组行和数据行;
  • 如果分组字段存在编码与显示值不一致的情况(比如Status的编码是1,显示为NEW),可以提前维护映射表,用编码作为ID的一部分,保证ID的稳定性。

内容的提问来源于stack exchange,提问作者Ryan Pierce Williams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:15:39