在extjs4.1中过滤服务器端的存储

时间:2012-08-30 15:21:31

标签: extjs filter extjs4 store extjs4.1

我必须从分隔的Ext.form.Panel中插入页面顶部的一组textfield / combobox中过滤网格存储。 我使用此代码进行网格过滤:

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();
    },

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

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分: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]更多,您将需要覆盖负责的代理函数