0

textfiled挿入された値を取得し、次のようにフィルターをストアに追加することで、グリッドで検索するために使用する単純なものがあります。

instructionSearchField: function(field, e) {
        if (e.getKey() == e.ENTER) {
            var searchTxt = this.getValue();

            this.recordsStore = Ext.data.StoreManager.lookup('Instructions');
            this.recordsStore.clearFilter(true);
            this.recordsStore.filter({
                filterFn: function(item) { 
                    return item.get('title').toLowerCase().indexOf(searchTxt.toLowerCase()) != -1;
                        }
                    });
            this.recordsStore.load();
            }
        },

したがって、ユーザーは必要なだけ検索できます。必要なだけ機能します。問題は、ある時点で、フィルタリング/検索前のグリッドの状態を戻したいことです。サーバーからロードするのはそれほど簡単ではないので、上記のようなローカルフィルターが複数回使用されたときに、ストアの開始状態を返す方法が ExtJS4 にあるのだろうか? 私にとって簡単な方法は、ストアとロードの基本的な状態を返し、それをロードすることですが、ドキュメントにはこのようなものが見つからなかったので、これを行う方法はありますか?

ありがとう

レロン

4

1 に答える 1

2

リモート フィルタリングを使用しない場合 (サーバーがレコードをフィルタリングし、一致するセットのみを返すように) load()、フィルターを適用した後に行う必要はありません。基本的なワークフローは次のとおりです。

  • store.load()- その後、ローカル コピーにはデータベースからのすべてのレコードが含まれます
  • store.filter(...)- ストアにはメモリ内のすべてのレコードが残っていますが、フィルターに一致するレコードのみにアクセスできます
  • store.clearFilter()- 再度保存すると、すべてのレコードが表示され、別のフィルターを再度適用できます (load()操作は 1 回だけ実行されたことに注意してください) 。
于 2012-05-16T12:09:38.500 に答える