基于easyui的列汇总统计

引用的方法
针对我们需要统计的列设置一个sum属性为true
{sortable:true,field : 'packageNum',title : '件数',width : parseInt($(this).width()*0.1),sum : true}
$("#table_id").datagrid({
     //设置表格的页脚,方便后续统计的数据存放。
     showFooter : true,
     //数据加载成功后调用方法
     onLoadSuccess : function() {
      $('#prepayDetail_dg').datagrid('statistics');
     }
});

二、js的实现

$.extend($.fn.datagrid.methods, {
 //仿照easyui的表格方法(例:appendRows的方法)
 statistics: function (jq) {
  //获取表格列
  var opt=$(jq).datagrid('options').columns;
  //取得表的行
  var rows = $(jq).datagrid("getRows");
  var footer = new Array();
  //定义统计的列有哪些
  footer['sum'] = "";
  //遍历表格的列,并判断是否存在统计的属性(sum),并把我们需要统计的列提取出来
  for(var i=0; i<opt[0].length; i++){
   if(opt[0][i].sum){
    footer['sum'] = footer['sum'] + sum(opt[0][i].field)+ ',';
   }
  }
  //定义数组用于接收各列的统计值
  var footerObj = new Array();
  if(footer['sum'] != ""){
   var tmp = '{' + footer['sum'].substring(0,footer['sum'].length - 1) + "}";
   var obj = eval('(' + tmp + ')');
   if(obj[opt[0][1].field] == undefined){
    footer['sum'] += '"' + opt[0][1].field + '":""';
    obj = eval('({' + footer['sum'] + '})');
   }else{
    obj[opt[0][1].field] = "" + obj[opt[0][1].field];
   }
   footerObj.push(obj);
  }
  //将我们统计的值加载到页脚行(表格的最后一行)
  if(footerObj.length > 0){
   $(jq).datagrid('reloadFooter',footerObj); 
  }
  //将需要统计的列的值进行统计计算
  function sum(filed){
   var sumNum = 0;
   for(var i=0;i<rows.length;i++){
    sumNum += Number(rows[i][filed]);
   }
   //组装统计列的值,注:这里的sumNum可以根据你需要的数据,区别我们是否需要保留小数点sumNum.toFixed(2);
   return '"' + filed + '":"' + sumNum +'"';
  };
 }
});

转载于:https://my.oschina.net/673236963/blog/506364

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值