将特定数据放在jqgrid摘要视图标题中

时间:2015-03-31 21:06:34

标签: jquery jqgrid

我有一个工作的jqgrid表,它在标题上有摘要视图,就像我在这个plunkr http://plnkr.co/edit/wjIlaVMsa9vusmfhgfL1?p=preview中实现的这个例子一样。

摘要视图标题工作正常,显示的数据来自jqgrid中的(sum)函数。

但是,我不是让jqgrid自己计算摘要,而是想在摘要行中显示我自己的数据(仍然是每列,我不想要一个colspan摘要标题)。最简单的例子是:假设我列下的数据都是文本。我还想要分组和摘要视图标题&在摘要标题上显示每列的数据,但我不希望jqgrid为我计算摘要(因为它是文本)。我想显示自己的摘要数据,这些数据也来自我的数据json。

我不认为使用

summaryTpl: '<b>{0}<b>'

对我有用,因为我要显示的数据来自我的json数据。

这可能吗? 如果我的解释不够明确,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:2)

您发布的演示使用jqGrid 4.6版本。您没有那么多可能在这种情况下设置自定义汇总值。您可以在需要放置自定义汇总值的列中使用自定义格式化程序。我在the old answer中描述了这种方法。这真的很棘手。

或者,我建议您使用free jqGrid 4.8(请参阅readmewiki)。免费的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部分。我认为这就是你想要的。