私の仕事は、フィルターがその列に適用されるたびに、extjs グリッドの列ヘッダーに画像を配置することです。フィルターがクリアされると、グリッド列ヘッダーから画像が削除されます。
extjs 3でこれを達成する方法は?
ExtJS 3.4 では、フィルターが列.ux-filtered-column
クラスでアクティブな場合、ヘッダー セルに追加されます。最も簡単な方法は、このクラスにカスタム スタイルを追加することです。
GridView には、使用されているグリッドへの参照があります。this.grid.store.isFiltered()
したがって、ストアがフィルタリングされているかどうかを確認するために使用できます。
datachanged
おそらく、グリッドのストアのイベントにバインドするリスナー関数でそのようなチェックを実行する必要があります。
initComponent: function() {
...
this.grid.store.on('datachanged', this.yourDesiredFunction, this);
...
}
yourDesiredFunction: function(store) {
if (store.isFiltered()) {
// do your stuff
}
}
クラス .ux-filtered-column のカスタム スタイルはうまく機能します。ただし、ヘッダー グリッドがグループ化されている場合、 .ux-filtered-columnはヘッダー セルに追加されません。