遇到給ExtJS頁面加一個合計行的問題,在后臺代碼里添加太麻煩了,這里給大家一個簡單的方法。
//合計函數Begin
function GridSum(grid)
{
var sum1 = 0; //存儲第一個列的合計值
var sum2 = 0; //存儲第二個列的合計值
//...有幾個列需要合計就聲明幾個變量
grid.store.each(function(record){ //函數grid.store.each(record))相當于一個for循環,遍歷整個record
sum1 += Number(record.data.money1); //把money1列下面的所有值進行加和運算
sum2 += Number(record.data.money2); //把money2列下面的所有值進行加和運算
});
var p = new Ext.data.Record(
{
money1:sum1, //把money1列與合計后得到的值對應起來
money2:sum2 //把money2列與合計后得到的值對應起來
}
);
grid.store.insert(0, p);// 插入到當前頁的第一行
//grid.store.insert(grid.getStore().getCount(), p); //插入到當前頁的最后一行,函數 grid.getStore().getCount()用來獲得當前頁的記錄行數
}
//合計函數End
// 在Store的load事件被觸發后,調用合計函數
gridui.getStore().on('load', function() {
GridSum(gridui.getGrid());//調用合計函數,gridui是你頁面中定義的gridui變量名,這里作為參數傳遞給GridSum()函數
});
注: 1.money1,money2是你頁面中"錢一"列和"錢二"列各自對應的"dataIndex"屬性值。
2.Store的load事件在"剛進入頁面"時,"點擊下一頁"時,"點擊查詢"時,都會被觸發。
3.該方法是對當前頁的值進行合計,并不統計所有頁的總合計值,點擊下一頁后會自動統計下頁的合計值并顯示。
感謝同事張繼業的幫助。