3

我必须从插入在单独 Ext.form.Panel 中的页面顶部的一组文本字段/组合框中过滤网格存储。我使用这个代码做网格过滤器:

doGridFilters : function() {
        //storeClients.clearFilter();
        var client_Id = Ext.getCmp('Id_form').getValue();
        var filter1 = Ext.create('Ext.util.Filter',{
             root:'list',
             comparison: 'eq',
             property: "Id",
             value: client_Id
        });

        storeClients.getProxy().extraParams = { filter: filter1 };
        storeClients.load();
    },

但商店不执行任何类型的过滤器。

谁能帮我?

4

1 回答 1

3

远程过滤非常简单:

  • 存储必须配置remoteFilter以便代理将处理并通过所有应用的过滤器
  • 接下来使用 store.filter('propertyName', 'filtervalue')应用过滤器。应用过滤器后,商店现在将自动加载。
  • 期望在服务器端有一个过滤器列表,看起来像 ...filter:[{property:'Name', value:'value'}]...

就这样。remoteFilter每次应用过滤器之前都可以更改该属性。对于您的情况:

doGridFilters : function(grid) {
    var store = grid.store;
    store.clearFilter();
    store.remoteFilter = true;// optional
    var client_Id = Ext.getCmp('Id_form').getValue();
    store.on('load', function(s){ s.remoteFilter = false; }, this, { single: true }) // optional
    store.filter("Id",client_Id);
}

注意:代理将始终只应用属性值配对过滤器,仅此而已 [ExtJS 4.1.1] 更多您需要覆盖负责的代理功能

于 2012-09-02T04:39:50.543 回答