C# 在Jqgrid上对列进行Sumarize
我从jqgrid中了解到使用getCol metod在本文中的网格页脚中显示摘要列,如下所示: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来完成,或者
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,