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