您发布的演示使用 jqGrid 4.6 版本。在案例中设置自定义汇总值的可能性不大。您可以在需要放置自定义汇总值的列中使用自定义格式化程序。我在the old answer 中描述了这种方法。这真的很棘手。
另外,我可以建议您使用free jqGrid 4.8(请参阅readme 和wiki)。免费 jqGrid 支持定义为函数的summaryType。为了展示它是如何工作的,我为您创建了一些 JSFiddle 示例。 The first one 来自您的原始演示。 The second one 包含
summaryType: function (v, cn, record) {
var fieldData = parseInt(record[cn], 10);
return v === "" ? fieldData : fieldData + v;
}
而不是summaryType: "sum"。摘要栏中的结果将接近原始结果,但我使用parseInt(record[cn], 10) 而不是parseFloat(record[cn])。所以我只得到输入数字的整数部分,结果也将是整数。
The next demo 包含静态变量
var mySummary = {
ALFKI: 12,
ANATR: 23,
AROUT: 34,
BERGS: 45,
BLAUS: 56
};
和看起来像的summaryType
summaryType: function (v, cn, record) {
return mySummary[record.CustomerID];
}
每个组的摘要结果将根据mySummary 地图显示。我提醒您,这些值将由您在列中定义的相同格式化程序格式化。因为你在Freight列中使用了formatter: 'number',所以结果应该是数字或者可以转换为数字的字符串。
The last demo 使用修改后的 JSON 数据
{
"userdata": {
"ALFKI": 12.34,
"ANATR": 23.45,
"AROUT": 34.56,
"BERGS": 45.67,
"BLAUS": 56.78
},
"rows":[
....
]
}
summaryType我是这么定义的
summaryType: function (v, cn, record) {
var userData = $(this).jqGrid("getGridParam", "userData");
return userData[record.CustomerID];
}
因此,分组摘要中显示的值来自服务器的userdata 部分。我想这就是你想要的。