3

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

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

它使网格显示Loading...消息,但没有任何反应。

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

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

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

4

2 回答 2

4

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

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

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

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

于 2013-10-17T09:27:36.557 回答
2

Loading...消息是由我声明网格的方式引起的。我已经在第一行指定了需要声明的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()
于 2013-07-04T09:31:01.387 回答