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