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 に答える