ExtJS4 更改数据存储参数
Posted
技术标签:
【中文标题】ExtJS4 更改数据存储参数【英文标题】:ExtJS4 Changing data store parameters 【发布时间】:2012-02-18 22:50:37 【问题描述】:如果我在这样的网格上有一个数据存储:
store = Ext.create('Ext.data.Store',
fields: [
name: 'id'
,
name: 'filename'
// other fields here ...
],
proxy:
type: 'ajax',
url: 'http://myniftyurl.com/blah',
simpleSortMode: true,
reader:
type: 'json',
totalProperty: 'total',
root: 'result'
,
extraParams:
'limit': Ext.get('itemsPerPage').getValue(),
'to': Ext.get('to_date').getValue()
// other params
,
model: 'Page',
remoteFilter: true,
remoteSort: true
);
'limit' 和 'to' 值会根据用户输入而改变,这就是问题所在。数据存储继续使用原始参数而不是新输入。我该如何解决这个问题?
提前致谢!
【问题讨论】:
你在使用 MVC 模式吗? (即这背后有控制器吗?) 【参考方案1】:我通常通过在控制器中执行 store.load() 手动加载我的网格。
在此之前,我可以像这样更改商店的参数:
//getForm() retrieves the Ext.basic.Form (from Ext.panel.Form)
var params = this.getForm().getValues();
//Write over
grid.getStore().getProxy().extraParams = params;
//load
grid.getStore().load();
我正在使用缓冲网格,这需要大量返工才能在 4.0.7 中完全正常工作。但这应该对你有用。
另一种选择是使用beforeload
侦听器,但我不确定到那时更改 extraParams 是否会做任何事情。您也许能够修改传递给事件处理程序的 Ext.data.Operation 对象?
让我知道你的效果如何。
祝你好运!
【讨论】:
手动调用 store.load() 有效,谢谢!我意识到最大的问题是分页工具栏上的按钮。如何更改点击事件,以便我可以像上面演示的那样手动调用 load? 对于分页工具栏,它应该使用最后设置到商店的参数。因此,您不想更改参数,除非通过您制作的过滤器。我错了吗? 你是对的!我只需要确保在加载前更新了参数,并且它工作得很好。再次感谢约翰!以上是关于ExtJS4 更改数据存储参数的主要内容,如果未能解决你的问题,请参考以下文章
无法从gridpanel extjs4 MVC中的存储加载数据