-1

我有一个带有 ItemFileWriteStore 的 EnhancedGrid。在网格上调用 startup() 后,我使用以下代码将其隐藏:

dojo.style(grid.domNode, 'display', 'none');

然后单击一个按钮,我更改了此网格的商店 URL,并尝试使用以下代码刷新商店并显示网格:

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 开发人员工具控制台中收到“对象错误”消息。

请。帮助我确定上述代码的任何问题。

4

2 回答 2

1

如何重新加载商店

如果最初使用“数据”属性(通过构造函数)填充存储,您也应该设置clearOnClose: true

的使用.save()仅适用于更改了某些设置 (isDirty) 并且需要将这些设置传播到服务器的 ItemFileWriteStore。也就是说,您不需要 .save 在已关闭的商店上(尽管 url 已更改,但未运行 fetch 并且肯定没有任何项目已更改)。

试试下面的代码,你只需要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}});
于 2012-08-27T06:42:49.433 回答
-1

问题是我有来自服务器的无效 JSON 带有一个额外的逗号。

IE 在这些事情上非常具体。

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

于 2012-08-27T10:33:13.473 回答