您发布的演示使用 jqGrid 4.6 版本。在这种情况下,您没有太多可能性设置自定义汇总值。您可以在需要放置自定义汇总值的列中使用自定义格式化程序。我在中描述了该方法旧答案 https://stackoverflow.com/a/7622718/315935。这真的很棘手。
或者我可以建议你使用免费 jqGrid 4.8 https://github.com/free-jqgrid/jqGrid (see readme https://github.com/free-jqgrid/jqGrid/blob/master/README.md and wiki https://github.com/free-jqgrid/jqGrid/wiki)。免费 jqGrid 支持summaryType
定义为函数。为了展示它是如何工作的,我为您创建了一些 JSFiddle 示例。第一个 http://jsfiddle.net/OlegKi/78m7jdaz/由您的原始演示组成。第二个 http://jsfiddle.net/OlegKi/78m7jdaz/1/包含
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])
。所以我只得到输入数字的整数部分,结果也将是整数。
下一个演示 http://jsfiddle.net/OlegKi/78m7jdaz/2/包含静态变量
var mySummary = {
ALFKI: 12,
ANATR: 23,
AROUT: 34,
BERGS: 45,
BLAUS: 56
};
and the summaryType
看起来像
summaryType: function (v, cn, record) {
return mySummary[record.CustomerID];
}
以这种方式显示每个组的汇总结果mySummary
地图。我提醒您,这些值将由您在列中定义的同一格式化程序进行格式化。因为你使用formatter: 'number'
在专栏中Freight
,那么结果应该是数字或者可以转换为数字的字符串。
最后一个演示 http://jsfiddle.net/OlegKi/78m7jdaz/3/使用修改后的 JSON 数据
{
"userdata": {
"ALFKI": 12.34,
"ANATR": 23.45,
"AROUT": 34.56,
"BERGS": 45.67,
"BLAUS": 56.78
},
"rows":[
....
]
}
The summaryType
我这样定义
summaryType: function (v, cn, record) {
var userData = $(this).jqGrid("getGridParam", "userData");
return userData[record.CustomerID];
}
结果,分组摘要中显示的值来自userdata
服务器的一部分。我想这就是你想要的。