将具体数据放入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 部分。我想这就是你想要的。