easyui 新增統計行,分頁欄總數
阿新 • • 發佈:2018-11-26
場景如下:
我們在表格中經常新增一行為統計行,統計具體列的相關和,這時候使用者在使用的時候,發現有效資料與分頁欄中展示的總個數不一致,會造成困惑。
產生原因: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}); }
當然這只是針對個性化需要,不是必要。