我有一个工作的jqgrid表,它在标题上有摘要视图,就像我在这个plunkr http://plnkr.co/edit/wjIlaVMsa9vusmfhgfL1?p=preview中实现的这个例子一样。
摘要视图标题工作正常,显示的数据来自jqgrid中的(sum)函数。
但是,我不是让jqgrid自己计算摘要,而是想在摘要行中显示我自己的数据(仍然是每列,我不想要一个colspan摘要标题)。最简单的例子是:假设我列下的数据都是文本。我还想要分组和摘要视图标题&在摘要标题上显示每列的数据,但我不希望jqgrid为我计算摘要(因为它是文本)。我想显示自己的摘要数据,这些数据也来自我的数据json。
我不认为使用
summaryTpl: '<b>{0}<b>'
对我有用,因为我要显示的数据来自我的json数据。
这可能吗? 如果我的解释不够明确,请告诉我。谢谢!
答案 0 :(得分:2)
您发布的演示使用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
地图显示每个组的摘要结果。我提醒您,值将使用您在列中定义的相同格式化程序进行格式化。由于您在formatter: 'number'
列中使用Freight
,因此结果应为数字或可转换为数字的字符串。
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
部分。我认为这就是你想要的。