如何使用jqgrid中的分组方法进行总结?
我对使用jqgrid的摘要有一个问题。我有一个专栏,我有分钟和小时,我想把它们加起来如何使用jqgrid中的分组方法进行总结?,jqgrid,grouping,Jqgrid,Grouping,我对使用jqgrid的摘要有一个问题。我有一个专栏,我有分钟和小时,我想把它们加起来 {name:'worked',index:'worked', width:'5%',title: false, align:"right",sortable:true,summaryType:'sum', summaryTpl:'<b>Total: {0}</b>'}, groupingView : { groupField : ['worked'],
{name:'worked',index:'worked', width:'5%',title: false, align:"right",sortable:true,summaryType:'sum', summaryTpl:'<b>Total: {0}</b>'},
groupingView : {
groupField : ['worked'],
groupSummary : [true],
groupColumnShow : [true],
groupText : ['<b>{0}</b>'],
groupCollapse : false,
groupOrder: ['asc']
},
首先,您需要一些JavaScript函数来进行计算,例如:
function toMinutes(hhmmString) {
var parts = hhmmString.split(':');
return (+parts[0]) * 60 + (+parts[1]);
}
function toHHMMString(minutes) {
var hh = Math.floor(minutes / 60);
var mm = minutes - (hh * 60);
if (hh < 10) {
hh = "0" + hh;
}
if (mm < 10) {
mm = "0" + mm;
}
return hh + ':' + mm;
}
function timeSummary(val, name, record) {
return toHHMMString(toMinutes(val || '00:00') + toMinutes(record[name] || '00:00'));
}
这将给出所需的结果。thx对于您的答案,您有一个语法错误“+m;”,但这不是问题所在。问题是我不明白。您创建了一个具有3个参数的函数。当你在这里称它为“summaryType:workedSummary”时,它应该看起来像“summaryType:workedSummary(整数,字符串,字符串)”。目前这两种方法都不起作用。它只是告诉我“加载”过程。有什么想法吗?thx@Chester函数签名及其配置方式是正确的,您可以在此处进行检查:(转到coldModel Options-->summaryType)。该行为表明JavaScript中存在一些异常,因此可能在datat中存在一些我没有看到的内容,您能用一些示例数据发布到网格的链接吗?也许是一个JSFIDLE演示?如果没有,请检查您的浏览器中是否没有关于JavaScript异常的信息。@切斯特,我已经重写了解决方案,使用分钟并概括了一点,您现在可以检查吗?@tpeczekI使用您的方法的结果,用图像更新了我的帖子。问:为什么我在timeSummary()中对val、name或record发出警报时,它是空的?@Chester如果配置正确,jqGrid将为每一行调用
timeSummary
(这就是为什么您只按名称将其传递给选项,jqGrid需要实际函数而不是结果)-对于第一行,val应为空,对于下一行,val应为上一次调用的结果。NaN
错误表明您的值转换失败。您能提供任何允许调试的原始数据吗?
if (groupingName != -1) {
$("#list2").jqGrid('groupingGroupBy', groupingName, {
groupOrder : ['desc']
});
}else{
$("#list2").jqGrid('groupingRemove');
}
});
function toMinutes(hhmmString) {
var parts = hhmmString.split(':');
return (+parts[0]) * 60 + (+parts[1]);
}
function toHHMMString(minutes) {
var hh = Math.floor(minutes / 60);
var mm = minutes - (hh * 60);
if (hh < 10) {
hh = "0" + hh;
}
if (mm < 10) {
mm = "0" + mm;
}
return hh + ':' + mm;
}
function timeSummary(val, name, record) {
return toHHMMString(toMinutes(val || '00:00') + toMinutes(record[name] || '00:00'));
}
{name: 'worked', index: 'worked', width: '5%', title: false, align: 'right', sortable: true, summaryType: timeSummary, summaryTpl: '<b>Total: {0}</b>' }