我有一个带有ItemFileWriteStore的EnhancedGrid。在网格上调用startup()之后,我使用以下代码隐藏它:
dojo.style(grid.domNode,'display','none');
然后点击一个按钮,我更改了该网格的商店网址,并尝试使用以下代码刷新商店并显示网格:
store.save();
store.close();
store.url='AjaxPopulate.json?os_type='+dijit.byId('osType').get('value');
store.save();
store.fetch({query:{id: '*'}});
dojo.style(grid.domNode, 'display', '');
grid.store.close();
grid.setStore(store);
以上代码适用于Firefox和Chrome,但不适用于IE8和IE9。我只是在IE Developer工具控制台中收到“对象错误”消息。
PLS。帮我识别上述代码的任何问题。
答案 0 :(得分:1)
如果使用'data'属性最初填充商店(通过构造函数),您也应该设置clearOnClose: true
。
.save()
的使用仅适用于更改了某些设置的ItemFileWriteStore(isDirty),需要将这些设置传播到服务器。也就是说,你不需要在一个封闭的商店上使用.save(尽管网址已经改变,但没有提取任何内容,并且肯定没有项目发生变化)。
尝试以下代码,您只需要grid
组件即可,因为在网格上调用.render()
会让它重新加载它的数据。
// save if dirty, otherwise we cannot close a store unless its reset
grid.store.save();
// close store, this should clear data
grid.store.close();
// set new URL
grid.store.url = '??';
// rerun fetch XHR
// reload grid data with new items (no need to setStore as its same object reused)
grid.store.fetch({query:{id: '*'}, onComplete: function() {grid.render}});
答案 1 :(得分:-1)
问题是我有一个无效的JSON来自服务器,只有一个额外的逗号。
IE对这些事情非常具体。
感谢所有观看并尝试回复的人。