ExtJS 4:更改存储参数名称

时间:2011-06-18 01:21:16

标签: extjs4

现在我遇到了一个问题,我似乎无法更改pagestartlimitdir的参数名称{ {1}}。

在ExtJS 3中,我可以这样做:

Ext.data.Store

我尝试将此配置添加到ExtJS 4的Ext.data.Store中,但是“start”,“limit”,“sort”和“dir”仍然显示为默认的参数名称。我需要能够改变它,因为服务器端功能需要这些参数名称。这也导致分页和远程排序无法工作,因为param名称与服务器端资源的期望值不匹配。

ExtJS 4中是否有一种新方法可以像ExtJS 3中那样更改这些参数名称?

4 个答案:

答案 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,以便将每个参数作为离散请求参数发送到服务器。