2010-10-21 32 views
1

我有幾個ExtJS的組件在我的網頁,圖表,束腰,FormPanel中和ECT,現在我遇到對他們的刷新一些問題,採取gridPanle例如:ExtJS的組件刷新

這是電網代碼:

var myStore=new Ext.data.JsonStore({ 
    autoLoad:true, 
    fields:['name','age'.....] 
}); 

var grid = new Ext.grid.GridPanel({ 
    stroe:myStore, 
    colums:myColumns 
    //....other config 
}); 

時,如果採取行動的Stroe的的重載情況下(由用戶觸發),商店會從服務器端獲取新的數據時,網格面板刷新,這是好的,

但是有時來自服務器的數據爲空(例如,沒有找到數據根據客戶的要求),如果是這樣,網格面板也會保存最後一個請求的數據,

如何使網格刷新(不顯示任何內容)並向用戶顯示沒有找到數據的內容?

所以在我的頁面中的其他組件,大多數是一些圖表。

我曾經想過使用添加處理程序處理刷新組件的事件,刷新之前檢查存儲,如果存儲爲空,然後執行某些操作,但是我發現我無法獲得存儲的成分,還他們的事件是不同的,對於eample:

對於GridPanle,存在的beforerender

http://dev.sencha.com/deploy/dev/docs/?class=Ext.grid.GridPanel

對於圖表的情況下,有beforerefresh的事件

http://dev.sencha.com/deploy/dev/docs/?class=Ext.chart.Chart

所以使用渲染或刷新?

任何想法?

回答

1

來自服務器的「空」響應通常應被視爲錯誤。

在您的網格示例中,如果沒有任何匹配項,則應該有記錄集的表示形式爲零記錄。對於典型的JsonStore,響應應該是這樣的:

{ total:0, items:[] } 

(假定的「總」一個totalProperty,和「項目」根)

這樣,它仍然是一個有效的響應(甚至如果它不爲空)。

如果您的服務器發回「null」或空的原始響應(零長度字符串),JsonReader不知道如何處理它,以及錯誤或失敗。