标签:
$.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