C# 在Jqgrid上对列进行Sumarize

C# 在Jqgrid上对列进行Sumarize,c#,asp.net-mvc-3,jqgrid,C#,Asp.net Mvc 3,Jqgrid,我从jqgrid中了解到使用getCol metod在本文中的网格页脚中显示摘要列,如下所示: var grid = $("#list"), sum = grid.jqGrid('getCol', 'amount', false, 'sum'); grid.jqGrid('footerData','set', {ID: 'Total:', amount: sum}); 但是,当网格包含寻呼机时,计算只针对显示的数据进行,我需要在文本框中显示一个一般总计列 这应该使用foreach来完成,或者

我从jqgrid中了解到使用getCol metod在本文中的网格页脚中显示摘要列,如下所示:

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

grid.jqGrid('footerData','set', {ID: 'Total:', amount: sum});
但是,当网格包含寻呼机时,计算只针对显示的数据进行,我需要在文本框中显示一个一般总计

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


显然,我可以将其包含在我的模型中,但希望在客户端执行此操作,除非传递整个数据集,否则无法使用多个页面执行此操作。这将是非常容易做到这一点,并将此数据作为您的用户数据的一部分向下传递

控制器:

    foreach (var item in dataset)
    {
        summaryTotal += (sum of some relevant values)
    }
    ...
    records = totalRecords,                
    userdata = new { ColumnNameForFooterSubtotal = summaryTotal.ToString() },
    rows = (
    ...
在您看来,我建议使用页脚,然后您在控制器中计算的值将显示在上面使用的列名的页脚行中。(ColumnNameForFooter小计)


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

这个答案是否假设
loadOnce:true
?@Mark:Yes,当然!
datatype:“local”
或一些带有
loadonce:true的远程
数据类型(“json”、“xml”或“jsonp”)。如果使用
datatype:“json”
而不使用
loadonce:true
,则无法计算客户端上没有的数据。如果您不使用也不想使用
loadonce:true
,则必须在服务器端执行此操作,并将结果放入
userdata
(如您的回答中)。这就是我所想的:)我只想清楚地说明这个问题,当我做我的回答时,我认为他是在从服务器上提取数页数据。@Mark:我同意你可以在服务器端做得更好,但问题的最后一句话是“但是想在客户端做”。。。所以我写了我的答案。@Guillermo:看看代码示例,不要忘记1)应该在JSON和
$(this.jqGrid(“getGridParam”,“userdata”)
(而不是
userdata
)中使用
userdata
)属性来访问内部保存的数据。2)
userdata
的值必须是类似于
userdata:{amount:123}
的对象(而不是类似于`userdata:123'的标量)。
   ...//jqGrid setup
   //turn on the footer   
   footerrow: true,
   userDataOnFooter: true,