您发布的演示使用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: function (v, cn, record) {
return mySummary[record.CustomerID];
}
在每个组汇总结果将基于mySummary
地图上显示的方式summaryType
。我提醒你,这些值将由你在列中定义的格式化器格式化。因为您在列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
部分显示的值。我认为这是你想要的。
嗨奥列格,感谢您的回复! jqGrid 4.8(http://www.trirand.com/blog/?p=1467)支持jqGrid 4.8中提到的技术吗?我只允许使用jqGrid而不是其他分支库.. – blenzcoffee 2015-04-01 00:08:19
@blenzcoffee:不客气!你应该自己测试一下,不管它是否支持Guriddo jqGrid JavaScript 4.8 ...没有更多的jqGrid。你可以在[Grriddo论坛](http://guriddo.net/?page_id=4)上提问。 – Oleg 2015-04-01 00:17:25
没有更多jqGrid?你的意思是最后一个版本是jqGrid 4.8吗? (我会检查论坛)。我正在尝试你的答案。当我设置jqGrid选项时,我已经有了我的用户数据,所以我正在使用静态变量方式。我会看看它是如何发展。谢谢! – blenzcoffee 2015-04-01 00:22:35