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

如何在jqGrid中启用部分分组功能?

没问题,我来帮你实现jqGrid的这种「按需分组」需求——只有当groupingId对应的记录数大于1时才显示分组,单条记录直接展示。下面是具体的实现步骤和完整代码:

1. 预处理数据:统计分组ID的记录数

首先我们需要先遍历数据源,统计每个groupingId的出现次数,同时给单条记录的分组ID做特殊标记,让它们成为独立的「隐形分组」:

var data = [
  { groupingId: '001', invoice: 1, amount: 5.00 },
  { groupingId: '001', invoice: 2, amount: 10.00 },
  { groupingId: '002', invoice: 3, amount: 8.00 }
];
var colNames = ['Invoice','Amount'];

// 统计每个groupingId的记录数(转成字符串避免数字类型冲突)
var groupCount = {};
data.forEach(item => {
  const key = String(item.groupingId);
  groupCount[key] = (groupCount[key] || 0) + 1;
});

// 给单条记录的groupingId添加唯一后缀,让它们成为独立分组
data.forEach(item => {
  const key = String(item.groupingId);
  if (groupCount[key] === 1) {
    item.groupingId = `${key}_single_${Date.now()}`;
  }
});

2. 配置jqGrid的分组参数

初始化jqGrid时开启分组功能,通过groupingView的自定义配置,让单条记录的分组头完全隐藏,达到「不分组」的视觉效果:

$("#grid").jqGrid({
  data: data,
  datatype: "local",
  colNames: colNames,
  colModel: [
    { name: 'invoice', width: 150 },
    { name: 'amount', width: 150, formatter: 'currency', formatoptions: { prefix: '$', decimalPlaces: 2 } },
    { name: 'groupingId', hidden: true } // 隐藏分组列,不展示给用户
  ],
  rowNum: 10,
  rowList: [10, 20, 30],
  pager: '#pager',
  viewrecords: true,
  caption: "Partial Grouping Demo",
  // 开启分组功能
  grouping: true,
  groupingView: {
    groupField: ['groupingId'],
    groupCollapse: false, // 默认展开所有分组
    groupColumnShow: [false], // 隐藏分组列(配合colModel的hidden配置)
    // 自定义分组头文本:单条记录的分组头为空
    groupText: function (value) {
      if (value.includes('_single_')) {
        return '';
      }
      const originalId = value.split('_single_')[0];
      return `Group: ${originalId} (${groupCount[originalId]} items)`;
    },
    // 隐藏单条记录的分组头样式
    groupHeader: function (value) {
      if (value.includes('_single_')) {
        return 'display: none;';
      }
      return '';
    }
  }
});

效果说明

  • 对于groupingId=001的两条记录:会显示正常的分组头,展开后展示两条数据;
  • 对于groupingId=002的单条记录:分组头会被完全隐藏,直接显示这条数据,视觉上和未分组的行完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:47:09