【问题标题】:Put specific data in jqgrid summary view header将特定数据放在jqgrid摘要视图标题中
【发布时间】:2015-03-31 21:06:34
【问题描述】:

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

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

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

我不认为使用

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

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

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

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    您发布的演示使用 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 地图显示。我提醒您,这些值将由您在列中定义的相同格式化程序格式化。因为你在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 (trirand.com/blog/?p=1467) 是否支持免费 jqGrid 4.8 中提到的技术?我只被允许使用 jqGrid 而不是其他分叉库..
    • @blenzcoffee:不客气!你应该自己测试一下,Guriddo jqGrid JavaScript 4.8是否支持......没有更多的jqGrid。你可以在Grriddo forum提问。
    • 没有 jqGrid 了吗?你的意思是最后一个版本是 jqGrid 4.8 吗? (我会检查论坛)。我现在正在尝试你的答案。当我设置 jqGrid 选项时,我已经有了我的用户数据,所以我将使用静态变量方式。我会看看情况如何。谢谢!
    • @blenzcoffee:不客气!如果您购买了该产品,您可以在Grriddo forum 询问。
    • 嗨奥列格,原来jqGrid 4.6.0也支持summaryType作为函数:)所以我使用了你旧答案中描述的技术。非常感谢!这非常非常有帮助!
    猜你喜欢
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多