更改ItemFileWriteStore URL,获取数据并刷新Grid

时间:2012-08-26 16:29:07

标签: dojo dojox.grid.datagrid

我有一个带有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。帮我识别上述代码的任何问题。

2 个答案:

答案 0 :(得分:1)

Howto reload store

如果使用'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对这些事情非常具体。

感谢所有观看并尝试回复的人。