我有一家商店:
var store = new Ext.data.store({
autoLoad: true,
autoSync: true,
model: 'myModel',
proxy: {
type: 'rest',
url: '/url/to/my/json/encoded/results',
reader: {
type: 'json',
root: 'results'
},
writer: {
type:'json'
}
}
});
这是我显示这些结果的某个网格的商店。 我的网格配置如下:
var myGrid = new Ext.grid.Panel({
id:'myGridID',
layout:'anchor',
border:false,
title:'My Grid',
width:412,
store:store,
heigth:300,
frame:false,
.... etc
在某些时候我添加了一个条目到我的数据库,它工作正常(如果我重新加载页面,我看到我的网格中新添加的记录)。 我想要做的是重新加载网格,这样当我将该条目保存到我的数据库中时,商店和网格会自行刷新并显示新添加的记录,而无需重新加载整个页面。
我试过了:
Ext.getCmp('myGridID').getStore().reload();
和...
Ext.getCmp('myGridID').getStore().load();
和...
Ext.getCmp('myGridID').getView().refresh();
我也尝试将商店设置为Ext.data.JsonStore,但它什么也没做。
但没有任何作用,我一直在互联网上搜索这个失败。
感谢任何帮助。
答案 0 :(得分:15)
这绝对有效:
Ext.getCmp('myGridID').getStore().load();
使用上述语法时是否收到任何javascript错误?如果是这样,查看特定的错误消息可能会提供一些线索。
此外,始终使用Chrome开发人员工具(如果您喜欢Firefox / IE,则使用Firebug或IE Developer Toolbar)。在这种情况下,您想要查看AJAX请求是否要发送到/ url / to / my / json / encoded / results。这至少会告诉您刷新商店的电话是否正在进入您的服务器。
我的猜测是,它不是,您很可能会生成错误消息。可能是“无法调用方法'getStore'未定义”
的内容这至少会让您知道您没有成功获得对网格的引用。从那里,检查以确保你没有为另一个元素或类似的东西复制“myGridID”。
您可以将一些信息输出到Chrome开发人员工具控制台以帮助调试,从以下开始:
console.log(Ext.getCmp('myGridID'));
查看它是否未定义,或返回对网格的引用。如果它未定义,那么您可能要么复制id,要么可能在实际创建组件之前尝试重新加载网格(在应用程序的更大上下文中查看代码将有助于确定)。
如果它成功返回对网格组件的引用,那么继续沿着这条线继续:
console.log(Ext.getCmp('myGridID').getStore());
无论如何,对于你现在可能已经解决的问题,这可能是太多的解释。也许这对其他人有帮助。
答案 1 :(得分:9)
试试这个对我有用 在版本 3.x
上测试Ext.getCmp('idMyGrid')。store.load();
你也可以使用
Ext.getCmp('idMyGrid')。store.reload();
如果要使用加载存储请求传递参数
Ext.getCmp('idMyGrid')。store.load({params:{paramName: paramValue}}); Ext.getCmp('idMyGrid')。store.reload({params: {paramName:paramValue}});
答案 2 :(得分:2)
如果要重新加载数据,则必须查看更改。我的意思是,把这些代码放在一起:
Ext.getCmp('idMyGrid').getStore().load();
Ext.getCmp('idMyGrid').getView().refresh();
这对我有用。我希望这也适合你。
来自智利香肠, Saluds。
答案 3 :(得分:0)
看我的代码:
var response = Ext.decode(result); //来自某个地方的JSON
store.proxy = new Ext.ux.data.PagingMemoryProxy(response);
grid.store = store;
store.load({params:{start:0,limit:20}});
grid.getView()刷新();