现在我遇到了一个问题,我似乎无法更改page
,start
,limit
和dir
的参数名称{ {1}}。
在ExtJS 3中,我可以这样做:
Ext.data.Store
我尝试将此配置添加到ExtJS 4的Ext.data.Store中,但是“start”,“limit”,“sort”和“dir”仍然显示为默认的参数名称。我需要能够改变它,因为服务器端功能需要这些参数名称。这也导致分页和远程排序无法工作,因为param名称与服务器端资源的期望值不匹配。
ExtJS 4中是否有一种新方法可以像ExtJS 3中那样更改这些参数名称?
答案 0 :(得分:5)
看看代理, 见http://docs.sencha.com/ext-js/4-0/#/api/Ext.data.proxy.Server directionParam,limitParam ...
答案 1 :(得分:2)
使用此代码:
proxy: {
type: 'ajax',
url: '/myurl',
method: 'GET',
**extraParams: { myKeyword: 'abcd' },**
reader: {
type: 'json',
root: 'rows'
}
}
现在,您可以通过以下方式将myKeyword值从abcd
更改为xyz
。
gridDataStore.proxy.extraParams.keyword='xyz';
gridDataStore.load();
这将设置参数的值并重新加载商店。
答案 2 :(得分:2)
要在商店的load
之前动态修改参数,您可以执行以下操作:
/* set an additional parameter before loading, not nice but effective */
var p = store.getProxy();
p.extraParams.searchSomething = search;
p.extraParams.somethingelse = 'This works too';
store.load({
scope : this,
callback: function() {
// do something useful here with the results
}
});
答案 3 :(得分:0)
密钥已重命名并移至Ext.data.Proxy对象。这是一个简单的例子,告诉ExtJS使用默认的Grails参数名称:
Ext.create('Ext.data.Store', {
// Other store properties removed for brevity
proxy: {
// Other proxy properties removed for brevity
startParam: "offset",
limitParam: "max",
sortParam: "sort",
directionParam: "order",
simpleSortMode: true
}
});
我还设置了simpleSortMode
,以便将每个参数作为离散请求参数发送到服务器。