将具体数据放入jqgrid汇总视图header
Put specific data in jqgrid summary view header
我有一个工作的 jqgrid table,它在 header 上有摘要视图,就像我在这个 plunkr here http://plnkr.co/edit/wjIlaVMsa9vusmfhgfL1?p=preview 中实现的这个例子一样。
摘要视图header工作正常,显示的数据来自jqgrid中的(sum)函数。
但是,我不想让 jqgrid 自己计算摘要,而是想在摘要行中显示我自己的数据(仍然是每列,我不想要 colspan 摘要 header)。最简单的例子是:假设我列下的数据都是文本。我仍然想要分组和摘要视图 header 并在摘要 header 上按列显示数据,但我不希望 jqgrid 为我计算摘要(因为它是文本)。我想显示我自己的汇总数据,也来自我的数据 json.
我不认为使用
summaryTpl: '<b>{0}<b>'
对我有用,因为我要显示的数据来自我的 json 数据。
这可能吗?
如果我的解释不够清楚,请告诉我。谢谢!
您发布的demo使用的是jqGrid 4.6版本。在这种情况下,您不太可能设置自定义汇总值。您可以在需要放置自定义汇总值的列中使用自定义格式化程序。我在 the old answer 中描述了这种方法。真的很棘手。
或者我可以建议你使用 free jqGrid 4.8 (see readme and wiki). Free jqGrid supports summaryType
defined as function. To show how it works I created some JSFiddle examples for you. The first one consist from your original demo. The second one contains
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
部分。我想这就是你想要的。
我有一个工作的 jqgrid table,它在 header 上有摘要视图,就像我在这个 plunkr here http://plnkr.co/edit/wjIlaVMsa9vusmfhgfL1?p=preview 中实现的这个例子一样。
摘要视图header工作正常,显示的数据来自jqgrid中的(sum)函数。
但是,我不想让 jqgrid 自己计算摘要,而是想在摘要行中显示我自己的数据(仍然是每列,我不想要 colspan 摘要 header)。最简单的例子是:假设我列下的数据都是文本。我仍然想要分组和摘要视图 header 并在摘要 header 上按列显示数据,但我不希望 jqgrid 为我计算摘要(因为它是文本)。我想显示我自己的汇总数据,也来自我的数据 json.
我不认为使用
summaryTpl: '<b>{0}<b>'
对我有用,因为我要显示的数据来自我的 json 数据。
这可能吗? 如果我的解释不够清楚,请告诉我。谢谢!
您发布的demo使用的是jqGrid 4.6版本。在这种情况下,您不太可能设置自定义汇总值。您可以在需要放置自定义汇总值的列中使用自定义格式化程序。我在 the old answer 中描述了这种方法。真的很棘手。
或者我可以建议你使用 free jqGrid 4.8 (see readme and wiki). Free jqGrid supports summaryType
defined as function. To show how it works I created some JSFiddle examples for you. The first one consist from your original demo. The second one contains
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
部分。我想这就是你想要的。