标签:
$.extend($.fn.datagrid.methods, { statistics: function (jq) { var opt = $(jq).datagrid(‘options‘).columns; var rows = $(jq).datagrid("getRows"); var footer = new Array(); footer[‘sum‘] = ""; footer[‘avg‘] = ""; footer[‘max‘] = ""; footer[‘min‘] = ""; //处理需要统计列的数据 sisFooterData(opt,footer); var frozenColumns = $(jq).datagrid(‘options‘).frozenColumns; var objfield = opt[0][0].field; if(frozenColumns.length != 0){ objfield = frozenColumns[0][0].field; //处理冻结列中需要统计列的数据 sisFooterData(opt,footer); } var footerObj = new Array(); if(footer[‘sum‘] != ""){ var tmp = ‘{‘ + footer[‘sum‘].substring(0,footer[‘sum‘].length - 1) + "}"; var obj = eval(‘(‘ + tmp + ‘)‘); if(obj[objfield] == undefined){ footer[‘sum‘] += ‘"‘ + objfield + ‘":"<b>合计:</b>"‘; obj = eval(‘({‘ + footer[‘sum‘] + ‘})‘); }else{ obj[objfield] = "<b>合计:</b>" + obj[objfield]; } footerObj.push(obj); } if(footer[‘avg‘] != ""){ var tmp = ‘{‘ + footer[‘avg‘].substring(0,footer[‘avg‘].length - 1) + "}"; var obj = eval(‘(‘ + tmp + ‘)‘); if(obj[objfield] == undefined){ footer[‘avg‘] += ‘"‘ + objfield + ‘":"<b>平均值:</b>"‘; obj = eval(‘({‘ + footer[‘avg‘] + ‘})‘); }else{ obj[objfield] = "<b>平均值:</b>" + obj[objfield]; } footerObj.push(obj); } if(footer[‘max‘] != ""){ var tmp = ‘{‘ + footer[‘max‘].substring(0,footer[‘max‘].length - 1) + "}"; var obj = eval(‘(‘ + tmp + ‘)‘); if(obj[objfield] == undefined){ footer[‘max‘] += ‘"‘ + objfield + ‘":"<b>最大值:</b>"‘; obj = eval(‘({‘ + footer[‘max‘] + ‘})‘); }else{ obj[objfield] = "<b>最大值:</b>" + obj[objfield]; } footerObj.push(obj); } if(footer[‘min‘] != ""){ var tmp = ‘{‘ + footer[‘min‘].substring(0,footer[‘min‘].length - 1) + "}"; var obj = eval(‘(‘ + tmp + ‘)‘); if(obj[objfield] == undefined){ footer[‘min‘] += ‘"‘ + objfield + ‘":"<b>最小值:</b>"‘; obj = eval(‘({‘ + footer[‘min‘] + ‘})‘); }else{ obj[objfield] = "<b>最小值:</b>" + obj[objfield]; } footerObj.push(obj); } if(footerObj.length > 0){ $(jq).datagrid(‘reloadFooter‘,footerObj); } function sisFooterData(opt,footer){ for (var j = 0; j < opt.length; j++) { for(var i=0; i<opt[j].length; i++){ if(!opt[j][i].field) continue; if(opt[j][i].sum){ footer[‘sum‘] = footer[‘sum‘] + sum(opt[j][i].field)+ ‘,‘; } if(opt[j][i].avg){ footer[‘avg‘] = footer[‘avg‘] + avg(opt[j][i].field)+ ‘,‘; } if(opt[j][i].max){ footer[‘max‘] = footer[‘max‘] + max(opt[j][i].field)+ ‘,‘; } if(opt[j][i].min){ footer[‘min‘] = footer[‘min‘] + min(opt[j][i].field)+ ‘,‘; } } } return footer; } function sum(filed){ var sumNum = 0; for(var i=0;i<rows.length;i++){ sumNum += Number(rows[i][filed]); } return ‘"‘ + filed + ‘":‘ + sumNum; }; function avg(filed){ var sumNum = 0; for(var i=0;i<rows.length;i++){ sumNum += Number(rows[i][filed]); } if(rows.length != 0) sumNum = sumNum/rows.length; return ‘"‘ + filed + ‘":‘+ sumNum; } function max(filed){ var max = 0; for(var i=0;i<rows.length;i++){ if(i==0){ max = Number(rows[i][filed]); }else{ max = Math.max(max,Number(rows[i][filed])); } } return ‘"‘ + filed + ‘":‘+ max; } function min(filed){ var min = 0; for(var i=0;i<rows.length;i++){ if(i==0){ min = Number(rows[i][filed]); }else{ min = Math.min(min,Number(rows[i][filed])); } } return ‘"‘ + filed + ‘":‘+ min; } } }); //使用方法 //sum、avg、max、min需要什么加什么 {field:‘mc‘,title:‘设备数‘,width:120,align:‘right‘,sum:true},
标签:
原文地址:http://my.oschina.net/kkrgwbj/blog/464504