ExtJs的Store在加載時候一般是延遲加載的,這時候Grid就會先出現一片空白,等加載完成後才出現數據;因此,我們需要給它添加一個提示信息!
但是Store卻沒有waitMsg屬性。
解決方案:
1.給store添加監聽器,監聽beforeload事件,加載前彈出提示框,加載完成後關閉提示框
2.callback爲load的回調函數,在加載完成後執行,因此關閉提示框由它完成;
3.一定要給store的reload方法也添加callback函數,已關閉提示框
例子主要代碼如下:
var msgTip; // 一定要定義在使用前,且定義爲全局變量
var reportStore=new Ext.data.Store({
proxy:reportProxy,
reader:reportReader,
listeners:{
beforeload:function(){
msgTip = Ext.MessageBox.show({
title:'提示',
width : 250,
msg:'頁面報表統計信息刷新中,請稍後......'
});
}
}
});
reportStore.load({
callback: function(records, options, success){
msgTip.hide(); // 加載完成,關閉提示框
}
});
注意:如果有調用reload來重新刷新頁面,reload也要添加callback函數來關閉提示框
reportStore.reload({
callback: function(records, options, success){
msgTip.hide(); // 加載完成,關閉提示框
}
});
---------------------------------------------------------------------------------
--------------------------------------Store.load簡介-----------------------------
store.load({
params: {start:0,limit:20}, //參數
// callback是加載完畢時執行的回調函數,它包含3個參數:records參數表示獲得的數據,
// options表示執行load()時傳遞的參數,success表示是否加載成功。
callback: function(records, options, success){
Ext.Msg.alert('info', '加載完畢');
},
scope: store, //Scope用來指定回調函數執行時的作用域
//Add爲true時,load()得到的數據會添加在原來的store數據的末尾,
//否則會先清除之前的數據,再將得到的數據添加到store中
add: true
});