从ExtJS 4中的存储重新加载数据
我有一家商店:从ExtJS 4中的存储重新加载数据,extjs,grid,refresh,store,reload,Extjs,Grid,Refresh,Store,Reload,我有一家商店: var store = new Ext.data.store({ autoLoad: true, autoSync: true, model: 'myModel', proxy: { type: 'rest', url: '/url/to/my/json/encoded/re
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.getCmp('myGridID').getStore().load();
Ext.getCmp('myGridID').getView().refresh();
我还尝试将存储设置为Ext.data.JsonStore,但它什么也不做
但是什么都不管用,我一直在互联网上搜索,但都没有成功
非常感谢您的帮助。这肯定会奏效:
Ext.getCmp('myGridID').getStore().load();
当您使用上述语法时,是否出现任何javascript错误?如果是这样,查看特定的错误消息可能会提供一些线索
此外,请始终使用Chrome开发者工具(如果您喜欢Firefox/IE,请使用Firebug或IE开发者工具栏)。在本例中,您希望查看AJAX请求是否发送到/url/to/my/json/encoded/results。这至少会告诉您刷新存储的呼叫是否正在发送到您的服务器
我的猜测是不是,你很可能有一个错误消息正在生成。可能类似于“无法调用未定义的'getStore'方法”
这至少会让您知道您没有成功地获得对网格的引用。从这里开始,检查以确保没有为另一个元素或类似愚蠢的东西复制“myGridID”
您可以将一些信息输出到Chrome developer tools控制台以帮助调试,首先是:
console.log(Ext.getCmp('myGridID'));
查看它是否未定义,或返回对网格的引用。如果它是未定义的,那么您可能正在复制id,或者在组件实际创建之前尝试重新加载网格(在应用程序的更大上下文中查看代码将有助于确定这一点)
如果它成功返回对网格组件的引用,则继续执行以下操作:
console.log(Ext.getCmp('myGridID').getStore());
不管怎么说,对于你现在可能已经解决的问题,这可能是太多的解释了。不过,这可能会对其他人有所帮助。请参阅我的代码:
var response=Ext.decode(结果);//来自某处的JSON
store.proxy=new Ext.ux.data.PagingMemoryProxy(响应)
grid.store=store
load({params:{start:0,limit:20}})
grid.getView().refresh()
如果要重新加载数据,必须查看更改。我的意思是,把这些代码放在一起:
Ext.getCmp('idMyGrid').getStore().load();
Ext.getCmp('idMyGrid').getView().refresh();
这是我的工作。我希望这对你也有用
来自智利的乔里佐,
Saluds.试试这个它对我很有效
在版本3.x上测试
Ext.getCmp('idMyGrid').store.load()
你也可以使用
Ext.getCmp('idMyGrid').store.reload()
如果要通过加载存储请求传递参数
Ext.getCmp('idMyGrid').store.load({params:{paramName:
参数值});Ext.getCmp('idMyGrid').store.reload({params:
{paramName:paramValue}})
当您尝试运行时会发生什么:
myGrid.getStore().load()代码>Ext.getCmp('myGridID').getStore().load()
应该可以工作也许它确实可以重新加载存储,但是我仍然必须重新加载网页才能在网格中看到新记录Ext.getCmp('myGridID')。getView().refresh()
应该可以工作。也许它确实可以重新加载存储,但是我仍然必须重新加载网页才能在网格中看到新记录