EasyUi的DataGrid组件扩展,显示统计当前页信息
// 为datagrid开启统计功能
02 |
$( "#list" ).datagrid({ |
03 |
.....
// 此处代码略 |
04 |
showFooter :
true , |
05 |
onLoadSuccess :
function () { |
06 |
$( "#list" ).datagrid( "statistics" ); |
07 |
} |
08 |
}); |
09 |
// 统计某列(参照金额列) |
10 |
<table id= "list" > |
11 |
<thead> |
12 |
<tr> |
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> |
19 |
</tr> |
20 |
</thead> |
21 |
</table> |
2. [图片] 效果演示

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" ); |
005 |
|
006 |
var
footer = new
Array(); |
007 |
footer[ "sum" ] =
"" ; |
008 |
footer[ "avg" ] =
"" ; |
009 |
footer[ "max" ] =
"" ; |
010 |
footer[ "min" ] =
"" ; |
011 |
|
012 |
for ( var
i=0; i<opt[0].length; i++){ |
013 |
if (opt[0][i].sum){ |
014 |
footer[ "sum" ] = footer[ "sum" ] + sum(opt[0][i].field)+
"," ; |
015 |
} |
016 |
if (opt[0][i].avg){ |
017 |
footer[ "avg" ] = footer[ "avg" ] + avg(opt[0][i].field)+
"," ; |
018 |
} |
019 |
if (opt[0][i].max){ |
020 |
footer[ "max" ] = footer[ "max" ] + max(opt[0][i].field)+
"," ; |
021 |
} |
022 |
if (opt[0][i].min){ |
023 |
footer[ "min" ] = footer[ "min" ] + min(opt[0][i].field)+
"," ; |
024 |
} |
025 |
} |
026 |
027 |
var
footerObj = new
Array(); |
028 |
|
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" ] +
"})" ); |
035 |
} else { |
036 |
obj[opt[0][0].field] =
"<b>当页合计:</b>" + obj[opt[0][0].field]; |
037 |
} |
038 |
footerObj.push(obj); |
039 |
} |
040 |
|
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" ] +
"})" ); |
047 |
} else { |
048 |
obj[opt[0][0].field] =
"<b>当页均值:</b>" + obj[opt[0][0].field]; |
049 |
} |
050 |
footerObj.push(obj); |
051 |
} |
052 |
|
053 |
if (footer[ "max" ] !=
"" ){ |
054 |
var
tmp = "{"
+ footer[ "max" ].substring(0,footer[ "max" ].length - 1) +
"}" ; |
055 |
var
obj = eval( "("
+ tmp + ")" ); |
056 |
|
057 |
if (obj[opt[0][0].field] == undefined){ |
058 |
footer[ "max" ] +=
""" + opt[0][0].field +
"":"<b>当页最大值:</b>"" ; |
059 |
obj = eval( "({"
+ footer[ "max" ] +
"})" ); |
060 |
} else { |
061 |
obj[opt[0][0].field] =
"<b>当页最大值:</b>" + obj[opt[0][0].field]; |
062 |
} |
063 |
footerObj.push(obj); |
064 |
} |
065 |
|
066 |
if (footer[ "min" ] !=
"" ){ |
067 |
var
tmp = "{"
+ footer[ "min" ].substring(0,footer[ "min" ].length - 1) +
"}" ; |
068 |
var
obj = eval( "("
+ tmp + ")" ); |
069 |
|
070 |
if (obj[opt[0][0].field] == undefined){ |
071 |
footer[ "min" ] +=
""" + opt[0][0].field +
"":"<b>当页最小值:</b>"" ; |
072 |
obj = eval( "({"
+ footer[ "min" ] +
"})" ); |
073 |
} else { |
074 |
obj[opt[0][0].field] =
"<b>当页最小值:</b>" + obj[opt[0][0].field]; |
075 |
} |
076 |
footerObj.push(obj); |
077 |
} |
078 |
|
079 |
|
080 |
|
081 |
if (footerObj.length > 0){ |
082 |
$(jq).datagrid( "reloadFooter" ,footerObj);
|
083 |
} |
084 |
|
085 |
|
086 |
function
sum(filed){ |
087 |
var
sumNum = 0; |
088 |
for ( var
i=0;i<rows.length;i++){ |
089 |
sumNum += Number(rows[i][filed]); |
090 |
} |
091 |
return
""" + filed + "":""
+ sumNum.toFixed(2) + """ ; |
092 |
}; |
093 |
|
094 |
function
avg(filed){ |
095 |
var
sumNum = 0; |
096 |
for ( var
i=0;i<rows.length;i++){ |
097 |
sumNum += Number(rows[i][filed]); |
098 |
} |
099 |
return
""" + filed + "":"" + (sumNum/rows.length).toFixed(2) + """ ; |
100 |
} |
101 |
102 |
function
max(filed){ |
103 |
var
max = 0; |
104 |
for ( var
i=0;i<rows.length;i++){ |
105 |
if (i==0){ |
106 |
max = Number(rows[i][filed]); |
107 |
} else { |
108 |
max = Math.max(max,Number(rows[i][filed])); |
109 |
} |
110 |
} |
111 |
return
""" + filed + "":"" + max + """ ; |
112 |
} |
113 |
|
114 |
function
min(filed){ |
115 |
var
min = 0; |
116 |
for ( var
i=0;i<rows.length;i++){ |
117 |
if (i==0){ |
118 |
min = Number(rows[i][filed]); |
119 |
} else { |
120 |
min = Math.min(min,Number(rows[i][filed])); |
121 |
} |
122 |
} |
123 |
return
""" + filed + "":"" + min + """ ; |
124 |
} |
125 |
} |
126 |
}); |
4. [代码]补充说明
1 |
使用前需要先导入 easyui.plugin.js 文件,另外需要修改easyui的datagrid组件源码,见下图 |
5. [图片] 1.jpg

原文出处:http://www.oschina.net/code/snippet_659525_20039
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: java file对象获取文件大小
- 下一篇: for循环的几种写法(变化)