如何在内存存储库更改后刷新dojo gridx?

时间:2013-07-03 14:39:54

标签: javascript dojo dojo.gridx

我正在使用 dojo 1.9 gridx 。网格使用内存存储进行初始化。但是当数据发生变化时,我会更新商店,但我看不到对网格应用的更改。它没有refresh()方法(例如 dgrid )。但是,我发现了以下序列:

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

它会导致网格显示Loading...消息,但不会发生任何其他情况。

但是,paginator显示正确的页数,只有网格容器不呈现行。

来自gridx源的过滤器/gridx/tests/test_grid_filter.html的示例存在同样的问题:Loading...消息,但没有数据。

所以第一个问题是,这是一个错误吗?如果它不是一个错误,我该如何告诉网格数据已经改变并且应该重新加载?

2 个答案:

答案 0 :(得分:4)

我之前的回答是有效的,从upvotes判断它对其他人有用,但我发现更简单的方法,不需要重新创建商店:

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

关键操作是清除缓存,设置新项目,并强制刷新浏览器。

令人困惑的是,GridX具有'store'属性,但它不是用于呈现数据的对象。实际对象是在模型上设置的存储,因此这是您需要修改的对象。

答案 1 :(得分:2)

Loading...消息是由我声明Grid的方式引起的。我在第一行指定了columns属性,需要声明structure

刷新序列太短。您还需要重新创建数据存储:

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()