store.filter(string, string)
メソッドを使用して、フィルターを_Ext.data.Store
_に明示的に追加します。
ただし、ストアからフィルターを削除する方法がわかりません。したがって、store.load()
を使用してリロードした後でも、フィルターは常に適用されます。私が見る唯一の回避策は、Webアプリ全体を再起動することです。
_Ext.data.Store
_からフィルターを削除するにはどうすればよいですか?
clearFilter()
する必要があります
Mchiの答えに加えて、特定のフィルターを削除することが可能であると言いたいです( clearFilter() それらすべてを削除します)。
これを行うには、store.filter('property_to_filter','value')
メソッドを使用する代わりに、次を使用します。
store.filters.add('filtersId', new Ext.util.Filter({
property: 'property_to_filter',
value: 'value'
}));
store.load();
フィルタの使用を削除するには:
store.filters.removeAtKey('filtersId');
4.2.0では、特定のフィルターを追加/削除する方法が追加されました。
store.addFilter({
id: 'filtersId',
property: 'property_to_filter',
value: 'value'
});
store.removeFilter('filtersId');
詳細については、ドキュメントを確認してください: Ext.data.Store.addFilter 、 Ext.data.Store.removeFilter
編集:私は(他の何かのためにAPIを閲覧して)それがさらに簡単であることに気づきました。 remoteFilterを使用するときにtrueの場合、データを再ロードしないパラメーター(ブール値)があります...
だからここに行く:
_store.clearFilter(true);
store.filter(...);
_
ソース: ストアAPI> clearFilter
そんなに長い間苦労したなんて信じられません。私が見たすべてのフォーラムで、リモートフィルタリングに役立たないclearFilterを見ました、そして私がしなければならなかったのは「真」を追加することだけでした...
元の投稿:
「
clearFilter()
する必要があります」
IMO、これは絶対に満足のいくものではありません。サーバーバックエンドを使用してデータを取得する場合(多くの場合)、remoteSort
およびremoteFilter
+ページングを使用して大きな結果セットを管理する場合、それは役に立たないことさえあります。
clearFilter()
を呼び出すと、フィルターを再適用する前に実際にデータが再ロードされます。したがって、フィルターが適用されるたびに2つのajaxリクエストが送信されます。これは長い間maを悩ませてきました。
あなたがしなければならないのは実際には:
_store.filters.clear(); // Which is what clearFilter() does just before reloading the data...
store.filter(...);
_