0

当我在 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 调用中过滤器没有调用

请任何人帮助我。

4

2 回答 2

0

您在商店中禁用了远程过滤。

更改并重remoteFilter: falseremoteFilter: true

文档

远程过滤器:布尔值

true 将任何过滤操作推迟到服务器。如果为 false,则在客户端本地进行过滤。

您似乎还专门告诉您的应用程序使用local:true配置在本地应用过滤器。

于 2015-03-26T13:36:05.760 回答
0

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

我目前的解决方法是通过gridStore.loadPage(page, [options]). 之后,您还应该再次将其更改回第一页。

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

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

希望你有一些提示。

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

于 2017-05-22T14:13:33.643 回答