var state = $.data(target, 'datagrid'); var opts = state.options; if (opts.sortName != opts.groupField){ return; } var groups = this.groups; groups.sort(function(a,b){ var v1 = sumValue(a.rows, 'listprice'); var v2 = sumValue(b.rows, 'listprice'); return (opts.sortOrder=='asc'?1:-1)*(v1>v2?1:-1); }); var index = 0; var newRows = []; for(var i=0; i<groups.length; i++){ var group = groups; group.startIndex = index; index += group.rows.length; newRows = newRows.concat(group.rows); } state.data.rows = newRows;
function sumValue(rows,field){ var v = 0; $.map(rows, function(row){ v += row[field]; }); return v; } } })