easyUI datagrid 合计行扩展的问题

瞎子写代码 2016-09-05 11:05:28
为什么我按照大家增加合计行 但是不显示合计行
}
$('#tableData').datagrid({
title:finalTitle,
url: CTX + '/board/LTB24HourOutBoard/!queryDataDetail',
queryParams: {
mailCategory: mailCategory,
scopeLevel: scopeLevel,areaCode: areaCode,
mailDate: mailDate
},
onLoadSuccess: function (data) {
controlHref();
$('#tableData').datagrid('statistics');//sum
}
});
/datagrid合计扩展
$.extend($.fn.datagrid.methods, {
statistics: function (jq) {
var opt = $(jq).datagrid('options').columns;
var rows = $(jq).datagrid("getRows");
var footer = new Array();
footer['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][0].field] == undefined) {
footer['sum'] += '"' + opt[0][0].field + '":"<b>合计:</b>"';
obj = eval('({' + footer['sum'] + '})');
} else {
obj[opt[0][0].field] = "<b>合计:</b>" + obj[opt[0][0].field];
}
footerObj.push(obj);
}
if (footerObj.length > 0) {
////test
for (var i = 0, l = footerObj.length; i < l; i++) {
for (var key in footerObj[i]) {
alert(key + ':' + footerObj[i][key]);
}
}
$(jq).datagrid('reloadFooter', footerObj);
}
function sum(filed) {
var sumNum = 0;
for (var i = 0; i < rows.length; i++) {
sumNum += Number(rows[i][filed]);
}
return '"' + filed + '":"' + sumNum.toFixed(0) + '"';
}
}
});
...全文
745 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37887092 2017-08-25
  • 打赏
  • 举报
回复
要死啦,要死啦
瞎子写代码 2016-09-05
  • 打赏
  • 举报
回复


为什么 不显示合计行呢
  • 打赏
  • 举报
回复
引用 8 楼 qq_31823423 的回复:
可是我的footer 数据 要怎么在前台设置

$('#tableData').datagrid({
    loadFilter: function(data){  
                //在这里计算,结果是json格式的对象,放到下面XXX
                var value = {  
                        total:data.total,  
                        rows:data.rows,
                        footer:XXX
                }; 
        return value;
    }
});
  • 打赏
  • 举报
回复
引用 8 楼 qq_31823423 的回复:
可是我的footer 数据 要怎么在前台设置
你不能在后台计算好吗?
瞎子写代码 2016-09-05
  • 打赏
  • 举报
回复
可是我的footer 数据 要怎么在前台设置
  • 打赏
  • 举报
回复
引用 6 楼 qq_31823423 的回复:
你用第三种吧 需要添加数据footer

{"total":28,"rows":[
	{"productid":"FI-SW-01","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
	{"productid":"K9-DL-01","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
	{"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":28.50,"attr1":"Venomless","itemid":"EST-11"},
	{"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
	{"productid":"RP-LI-02","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
	{"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
	{"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
	{"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":63.50,"attr1":"Adult Female","itemid":"EST-16"},
	{"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
	{"productid":"AV-CB-01","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"}
],"footer":[
	{"unitcost":19.80,"listprice":60.40,"productid":"Average:"},
	{"unitcost":198.00,"listprice":604.00,"productid":"Total:"}
]}
瞎子写代码 2016-09-05
  • 打赏
  • 举报
回复
这问题找了一天了呢 我试过好几种方法 1.扩展合计方法 $('#tableData').datagrid({ title: finalTitle, url: CTX + '/board/LTB24HourOutBoard/!queryData', showFooter: true, queryParams: {group:group,mailCategory: $("#mailCategory").combobox("getValue"), mechanism: " ", startDate: $("#startDate").datebox("getValue"), endDate: $("#endDate").datebox("getValue"), scopeLevel:scopeLevel, areaCode:code,mailDate:"" }, onLoadSuccess: function (data) { controlHref(); if(data.total>0){ alert("sum"); $('#tableData').datagrid('statistics'); //合计扩展 $.extend($.fn.datagrid.methods, { statistics: function (jq) { var opt = $(jq).datagrid('options').columns; var rows = $(jq).datagrid("getRows"); var footer = new Array(); footer['sum'] = ""; for (var i = 0; i < opt[0].length; i++) { if (opt[0][i].sum) { footer['sum'] = footer['sum'] + sum(opt[0][i].field, 1) + ','; } } 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][0].field] == undefined) { footer['sum'] += '"' + opt[0][0].field + '":"<b>合计:</b>"'; //第0列显示为合计 obj = eval('({' + footer['sum'] + '})'); } else { obj[opt[0][0].field] = "<b>合计:</b>" + obj[opt[0][0].field]; } footerObj.push(obj); } if (footerObj.length > 0) { $(jq).datagrid('reloadFooter', footerObj); } function sum(filed) { var sumNum = 0; var str = ""; for (var i = 0; i < rows.length; i++) { var num = rows[i][filed]; sumNum += Number(num); } return '"' + filed + '":"' + sumNum.toFixed(2) + '"'; } } }); 2.然后我又在官方api 上找到 var rows = $('#dg').datagrid('getFooterRows'); rows[0]['name'] = 'new name'; rows[0]['salary'] = 60000; $('#dg').datagrid('reloadFooter'); 第二种方法我得不到rows 这是不是说没有footer 难道在初始化的时候要给footer 赋值吗 具体怎么搞 要死啦 要死啦
瞎子写代码 2016-09-05
  • 打赏
  • 举报
回复
我加了 也不行呢
我和datagrid 是在界面画好了 然后加进去的 不知道是什么原因呢
你说神奇不神奇




我是这样加载datagrid的 数据
  • 打赏
  • 举报
回复
引用 3 楼 qq_31823423 的回复:
看了也没啥捏 我比较笨
showFooter: true 而且easyui自带那种统计显示,只要后台传对参数就好了
瞎子写代码 2016-09-05
  • 打赏
  • 举报
回复
看了也没啥捏 我比较笨
  • 打赏
  • 举报
回复
引用 1 楼 qq_31823423 的回复:
为什么 不显示合计行呢
连接左侧找Footer Rows in DataGrid 自己看吧

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧