【问题标题】:Sumarize Columns on Jqgrid在 Jqgrid 中汇总列
【发布时间】:2013-04-18 22:27:56
【问题描述】:

我阅读了有关使用 jqgrid 中的 getCol 方法在此 question 的网格页脚中显示汇总列的信息,例如:

var grid = $("#list"),
sum = grid.jqGrid('getCol', 'amount', false, 'sum');

grid.jqGrid('footerData','set', {ID: 'Total:', amount: sum});

但当网格包含寻呼机时,计算仅针对显示的数据发生,我需要在文本框中显示 General total 列。

这应该使用foreach来完成,或者有什么方法可以做到最有效?

显然我可以将它包含在我的模型中,但想在客户端进行

【问题讨论】:

    标签: c# asp.net-mvc-3 jqgrid


    【解决方案1】:

    除非您传递整个数据集,否则无法对多个页面执行此操作。这样做很容易,并将这些数据作为用户数据的一部分向下传递。

    控制器:

        foreach (var item in dataset)
        {
            summaryTotal += (sum of some relevant values)
        }
        ...
        records = totalRecords,                
        userdata = new { ColumnNameForFooterSubtotal = summaryTotal.ToString() },
        rows = (
        ...
    

    那么在您看来,我建议使用页脚,然后您在控制器中计算的值将出现在您上面使用的列名的页脚行中。 (ColumnNameForFooterSubtotal)

       ...//jqGrid setup
       //turn on the footer   
       footerrow: true,
       userDataOnFooter: true,
    

    【讨论】:

      【解决方案2】:

      可以先使用grid.jqGrid("getGridParam", "data")获取网格的内部数据。数据包含有关所有页面的信息。然后你可以做一个简单的for循环来枚举grid.jqGrid("getGridParam", "data")返回的数组中的项目。每个项目都有属性amount。所以你需要使用parseInt(item.amount, 10)将数据转换为int(或使用parseFloat)并计算所需的总和。

      【讨论】:

      • 这个答案是否假设loadOnce: true
      • @Mark:是的,当然! datatype: "local" 或带有loadonce: true 的远程datatype(“json”、“xml”或“jsonp”)。如果一个人使用datatype: "json" 而不使用loadonce: true,则无法计算客户端没有的数据。如果您不使用也不想使用loadonce: true,那么必须在服务器端执行此操作并将结果放在userdata 中(就像您的答案一样)。
      • 我就是这么想的 :) 我只是想清楚地了解这个主题,当我回答时,我假设他正在从服务器中提取数据页。
      • @Mark:我同意你可以在服务器端做得更好,但问题的最后一句话是“但想在客户端做”......所以我写了我的答案.
      • @Guillermo:查看here 的代码示例,不要忘记 1) 应该在 JSON 和 $(this).jqGrid("getGridParam", "userData") 中使用userdata 属性(不是userData)和$(this).jqGrid("getGridParam", "userData")(不是@987654339 @) 访问内部保存的数据。 2)userdata 的值必须是 object,如 userdata: {amount: 123}(不是标量,如 `userdata: 123)。
      猜你喜欢
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      相关资源
      最近更新 更多