easyui 添加统计行,分页栏总数

场景如下:

我们在表格中经常添加一行为统计行,统计具体列的相关和,这时候用户在使用的时候,发现有效数据与分页栏中展示的总个数不一致,会造成困惑。

产生原因:easyuigrid一般在表格加载onloadSuccess 函数中以insertRow 或者appendRow 函数来追加统计行

代码如下:

onLoadSuccess:function(data,index){
            var rows = $('#rptDay').datagrid('getRows')//获取当前的数据行
            var txcount = 0//计算txcount的总和    
            for (var i = 0; i < rows.length; i++) {
                txcount += parseFloat(rows[i]['txcount']);
            }
           //新增一行显示统计信息
            //toFixed(2) 精度
           $('#rptDay').datagrid('appendRow', {rptdate:'合计',orgname:'',txcount: txcount.toFixed(2)});
}

那么这时候datagrid分页总数就多了一行,查看源代码如下:

#jquery.datagrid.js中 datagridappendrow方法

appendRow:function(jq,row){
return jq.each(function(){
_18d(this,row);
});


function _18d(_18e,row){
var data=$.data(_18e,"datagrid").data; # 获取加载成功后的数据集合 此时把合计行算入
var view=$.data(_18e,"datagrid").options.view;
var _18f=$.data(_18e,"datagrid").insertedRows;
view.insertRow.call(view,_18e,null,row);
_18f.push(row);
$(_18e).datagrid("getPager").pagination("refresh",{total:data.total});#在此处刷新分页栏中的分页总数
};

由源码中可以得知,在datagrid加载完成后,重新渲染分页栏相关信息,那么此时要把统计行从总分页数中减去则需要在onloadSuccess 函数中添加如下处理:

onLoadSuccess:function(data,index){
            var rows = $('#rptDay').datagrid('getRows')//获取当前的数据行
            #获取统计行追加前的总行数
            var oldRows=parseInt(rows.length);
            var txcount = 0//计算txcount的总和    
            for (var i = 0; i < rows.length; i++) {
                txcount += parseFloat(rows[i]['txcount']);
            }
           //新增一行显示统计信息
            //toFixed(2) 精度
           $('#rptDay').datagrid('appendRow', {rptdate:'合计',orgname:'',txcount: txcount.toFixed(2)});
            #在追加行后重新渲染分页栏
         $('#rptDay').datagrid("getPager").pagination("refresh",{total:oldRows});
}

当然这只是针对个性化需要,不是必要。
 

猜你喜欢

转载自blog.csdn.net/shenchengxinsunwei/article/details/84372380