2011-06-05 115 views
1

我在Dojo中更改了組合框的ItemFileReadStore。 我的代碼看起來像Dojo - 如何使用更新的ItemFileReadStore數據刷新組合框

<span dojoType="dojo.data.ItemFileReadStore" 
       jsId="comboStore" 
       data="transformData"> 
      <select dojoType="mywidget.DropDown" id="transformCombo" value="" store="comboStore" searchAttr="name" name="state" maxHeight="100"/> 

我的小部件類似於道場組合框控件。我更改了transformData,但組合框不會更新,直到頁面完全重新加載。任何想法?

回答

3

如果內容正在改變服務器端,並且您只想刷新其本地副本而不重新加載頁面,則可以在存儲上調用fetch,並在收到新數據時更新組件。

下面是我用刷新dojox.grid.DataGrid當服務器端內容更新代碼:

// initialise store and link to DataGrid 
var store = new dojo.data.ItemFileReadStore({ 
    url: "items.json", 
    clearOnClose: true, 
    urlPreventCache: true 
}); 
var grid = dijit.byId("grid") 
grid.setStore(store); 

// code to update local copy 
store.close(); 
store.fetch({ 
    onComplete: function(items, request) { 
     grid._refresh(); 
    } 
}); 

如果您正在修改的數據客戶端,你或許應該使用ItemFileWriteStore作爲安德烈建議。

編輯: grid.sort()可用於刷新一個DataGrid作爲替代grid._refresh()(誰的行爲可能會隨時間而改變)

+0

知道的,如果dndManager連接,關閉店面不會泡到DND。在'刷新'之後,我們需要拆除dnd並重建, – mschr 2012-05-05 09:52:08