2013-07-03 75 views
3

我正在使用dojo 1.9gridx。網格用內存存儲進行初始化。但是,當數據發生變化時,我會更新商店,但我看不到應用於網格的更改。它沒有refresh()方法(如dgrid)。然而,我發現下面的順序:如何在內存存儲更改後刷新dojo gridx?

  grid.model.clearCache(); 
      grid.model.setStore(store) 
      grid.body.refresh() 

它使網格顯示Loading...消息,但僅此而已發生。

但是,paginator顯示正確的頁數,只有網格容器不呈現行。

來自gridx源的篩選器/gridx/tests/test_grid_filter.html的示例具有相同的問題:Loading...消息,但沒有數據。

所以第一個問題是,它是一個錯誤?如果它不是一個bug,那麼我應該如何告訴網格數據已經改變並且應該重新加載?

回答

3

我以前的答案的作品,並從upvotes它是爲其他有用的判斷,但我發現更簡單的方法,不需要重新創建商店:

grid.model.clearCache(); 
grid.model.store.setData(items) 
grid.body.refresh() 

關鍵操作是清除緩存,設置新項目並強制刷新瀏覽器。

令人困惑的是,GridX有'store'屬性,但它不是用來呈現數據的對象。實際的對象是在模型上設置的商店,所以這是您需要修改的對象。

+1

直到我添加'grid.setStore(items);'grid.model.store.setData(items)'之前' – DemiSheep

2

Loading...消息是由我聲明網格的方式引起的。我已指定columns屬性,需要在第一行中聲明structure

刷新順序太短。您也需要重新creade數據存儲:

var storeData = { 
    identifier: 'id', 
    items: response.items 
}; 
grid.model.clearCache(); 
storeData.items = data.result 
store = new Memory({data: storeData}); 
grid.model.setStore(store) 
grid.body.refresh()