Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/480.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 内存存储更改后如何刷新dojo gridx?_Javascript_Dojo_Dojo.gridx - Fatal编程技术网

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

Javascript 内存存储更改后如何刷新dojo gridx?,javascript,dojo,dojo.gridx,Javascript,Dojo,Dojo.gridx,我正在使用Dojo1.9和gridx。使用内存存储初始化网格。但当数据发生更改时,我会更新存储,但我看不到应用于网格的任何更改。它没有refresh()方法(如dgrid)。但是,我发现了以下顺序: grid.model.clearCache(); grid.model.setStore(store) grid.body.refresh() 它会导致网格显示加载…消息,但不会再发生任何事情 但是,paginator显示了正

我正在使用Dojo1.9和gridx。使用内存存储初始化网格。但当数据发生更改时,我会更新存储,但我看不到应用于网格的任何更改。它没有
refresh()
方法(如dgrid)。但是,我发现了以下顺序:

            grid.model.clearCache();
            grid.model.setStore(store)
            grid.body.refresh()
它会导致网格显示
加载…
消息,但不会再发生任何事情

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

来自gridx源的过滤器
/gridx/tests/test\u grid\u filter.html
的示例存在相同的问题:
加载…
消息,但没有数据


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

加载…消息是由我声明网格的方式引起的。我已经指定了
columns
属性,需要在第一行声明
结构

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

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

我之前的答案是有效的,从投票结果来看,它对其他人很有用,但我发现了一种更简单的方法,不需要重新创建商店:

grid.model.clearCache();
grid.model.store.setData(items)
grid.body.refresh()
关键操作是清除缓存、设置新项目和强制刷新浏览器


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

在我添加
grid.setStore(items)之前,这不会起作用
before
grid.model.store.setData(项目)