过滤器参数值(名称值)不是在Ajax调用中发送的

时间:2015-03-25 08:02:17

标签: ajax extjs filter extjs4 extjs-grid

当我在API调用中执行过滤操作时,不包括过滤参数值,即名称值,如下所示

_dc:1427270031651
counrtyId:2
custId:1
id:
name:
page:1
start:0
limit:10
sort:[{"property" : "id", "direction" : "desc"}]

这是我的商店

Ext.define('MyDesktop.store.DirectoriesStore', {
    extend: 'Ext.data.Store',
    requires:'MyDesktop.model.DirectoriesNumberModel',
    model: 'MyDesktop.model.DirectoriesModel',
    storeId:'DirectoriesStore',
    autoLoad : {
        params : {
            start : 0,
            limit : '10'
        }
    },
    pageSize : 10,
    remoteSort : true,
    sorters : [{
        property : 'id',
        direction : 'desc'
    }],
    remoteFilter : true,
    proxy:{
        type:'ajax',
        url:'./configuration/directory/get',
        reader:{
             type: 'json',
             root: 'data',
             totalProperty: 'total'
        },
        extraParams: {
            'countryId':    '',
            'custId':  ''
        }
     },
    autoLoad:false
});

这是我的观点

Ext.require([
    'Ext.ux.grid.FiltersFeature'
]);

var filters = {
    ftype: 'filters',
    local: true,
    features: [{type: 'integer',dataIndex: 'name'},
               {type: 'string',dataIndex: 'description'},
               {type: 'string',dataIndex: 'fileName'}]
            };

我按如下方式添加了网格:

features: [filters],

过滤器正在运行,但在API调用过滤器中没有调用

请有人帮助我。

2 个答案:

答案 0 :(得分:0)

您的商店已停用远程过滤功能。

remoteFilter: false更改为remoteFilter: true,然后重试。

来自docs

  

remoteFilter:Boolean

     

如果将任何过滤操作推迟到服务器,则为true。如果是假的,   过滤在客户端本地完成。

您还可以明确告诉您的应用程序在本地使用local:true配置应用过滤器。

答案 1 :(得分:0)

问题是,params没有被发送到ajax调用。但是,嘿,尝试在加载商店后更改页面。然后尝试再次排序。您将看到params现在正在Ajax请求中发送。

我目前的解决方法是通过gridStore.loadPage(page, [options])模仿更改页面。在此之后,您还应该将其重新更改为第一页。

更改页面后,排序将适用于所有后续请求。

这当然只是一种解决方法,我们可能有不同的要求。我的网格在渲染后调用store.load(),所以我在那里附加了更改页面。

希望你有一些提示。

注意:这只是一个解决方法!