// 为datagrid开启统计功能
05 | onLoadSuccess : function () { |
06 | $( '#list' ).datagrid( 'statistics' ); |
13 | <th field= "no"
width= "100" >序号</th> |
14 | <th field= "data"
width= "100" >日期</th> |
15 | <th field= "money"
width= "100" |
16 | formatter= "formatMoney"
align= "right" |
17 | sum= "true"
avg= "true" min= "true" max= "true"
>金额(元)</th> |
18 | <th field= "status"
width= "60" sortable= "true" >有效状态</th> |
2. [图片] 效果演示
![](http://static.oschina.net/uploads/code/201304/07181945_Dym2.jpg)
3. [文件] easyui.plugin.js ~ 3KB
下载(160)
001 | $.extend($.fn.datagrid.methods, { |
002 | statistics: function (jq) { |
003 | var
opt=$(jq).datagrid( 'options' ).columns; |
004 | var
rows = $(jq).datagrid( "getRows" ); |
006 | var
footer = new Array(); |
012 | for ( var
i=0; i<opt[0].length; i++){ |
014 | footer[ 'sum' ] = footer[ 'sum' ] + sum(opt[0][i].field)+ ',' ; |
017 | footer[ 'avg' ] = footer[ 'avg' ] + avg(opt[0][i].field)+ ',' ; |
020 | footer[ 'max' ] = footer[ 'max' ] + max(opt[0][i].field)+ ',' ; |
023 | footer[ 'min' ] = footer[ 'min' ] + min(opt[0][i].field)+ ',' ; |
027 | var
footerObj = new Array(); |
029 | if (footer[ 'sum' ] != "" ){ |
030 | var
tmp = '{' + footer[ 'sum' ].substring(0,footer[ 'sum' ].length - 1) + "}" ; |
031 | var
obj = eval( '(' + tmp + ')' ); |
032 | if (obj[opt[0][0].field] == undefined){ |
033 | footer[ 'sum' ] += '"' + opt[0][0].field +
'":"<b>当页合计:</b>"' ; |
034 | obj = eval( '({'
+ footer[ 'sum' ] + '})' ); |
036 | obj[opt[0][0].field] = "<b>当页合计:</b>" + obj[opt[0][0].field]; |
041 | if (footer[ 'avg' ] != "" ){ |
042 | var
tmp = '{' + footer[ 'avg' ].substring(0,footer[ 'avg' ].length - 1) + "}" ; |
043 | var
obj = eval( '(' + tmp + ')' ); |
044 | if (obj[opt[0][0].field] == undefined){ |
045 | footer[ 'avg' ] += '"' + opt[0][0].field +
'":"<b>当页均值:</b>"' ; |
046 | obj = eval( '({'
+ footer[ 'avg' ] + '})' ); |
048 | obj[opt[0][0].field] = "<b>当页均值:</b>" + obj[opt[0][0].field]; |
053 | if (footer[ 'max' ] != "" ){ |
054 | var
tmp = '{' + footer[ 'max' ].substring(0,footer[ 'max' ].length - 1) + "}" ; |
055 | var
obj = eval( '(' + tmp + ')' ); |
057 | if (obj[opt[0][0].field] == undefined){ |
058 | footer[ 'max' ] += '"' + opt[0][0].field +
'":"<b>当页最大值:</b>"' ; |
059 | obj = eval( '({'
+ footer[ 'max' ] + '})' ); |
061 | obj[opt[0][0].field] = "<b>当页最大值:</b>" + obj[opt[0][0].field]; |
066 | if (footer[ 'min' ] != "" ){ |
067 | var
tmp = '{' + footer[ 'min' ].substring(0,footer[ 'min' ].length - 1) + "}" ; |
068 | var
obj = eval( '(' + tmp + ')' ); |
070 | if (obj[opt[0][0].field] == undefined){ |
071 | footer[ 'min' ] += '"' + opt[0][0].field +
'":"<b>当页最小值:</b>"' ; |
072 | obj = eval( '({'
+ footer[ 'min' ] + '})' ); |
074 | obj[opt[0][0].field] = "<b>当页最小值:</b>" + obj[opt[0][0].field]; |
081 | if (footerObj.length > 0){ |
082 | $(jq).datagrid( 'reloadFooter' ,footerObj); |
088 | for ( var
i=0;i<rows.length;i++){ |
089 | sumNum += Number(rows[i][filed]); |
091 | return
'"' + filed + '":"'
+ sumNum.toFixed(2) + '"' ; |
096 | for ( var
i=0;i<rows.length;i++){ |
097 | sumNum += Number(rows[i][filed]); |
099 | return
'"' + filed + '":"' + (sumNum/rows.length).toFixed(2) + '"' ; |
104 | for ( var
i=0;i<rows.length;i++){ |
106 | max = Number(rows[i][filed]); |
108 | max = Math.max(max,Number(rows[i][filed])); |
111 | return
'"' + filed + '":"' + max + '"' ; |
116 | for ( var
i=0;i<rows.length;i++){ |
118 | min = Number(rows[i][filed]); |
120 | min = Math.min(min,Number(rows[i][filed])); |
123 | return
'"' + filed + '":"' + min + '"' ; |
4. [代码]补充说明
1 | 使用前需要先导入 easyui.plugin.js 文件,另外需要修改easyui的datagrid组件源码,见下图 |
5. [图片] 1.jpg
![](http://static.oschina.net/uploads/code/201309/06175131_rRGE.jpg)
原文出处:http://www.oschina.net/code/snippet_659525_20039