1. 程式人生 > >easyui 新增統計行,分頁欄總數

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});
}

當然這只是針對個性化需要,不是必要。