constructor(grid: FlexGrid, options?: any): FlexGridFilter
FlexGridFilterクラスの新しいインスタンスを初期化します。
The FlexGrid to filter.
Initialization options for the FlexGridFilter.
アクティブなColumnFilterEditor を取得します。
このプロパティを使用すると、filterChanging イベントを処理するときに フィルターエディターをカスタマイズできます。フィルターが編集されていない場合はnullを返します。
使用するデフォルトフィルタタイプを取得または設定します。
この値は特定の列のフィルタでオーバーライドできます。 たとえば、以下のサンプルコードは、"ByValue"列を除くすべての列に対して条件に基づくフィルタを作成します。
```typescript import { FlexGridFilter, FilterType } from '@grapecity/wijmo.grid.filter'; let filter = new FlexGridFilter(flex); filter.defaultFilterType = FilterType.Condition; let col = flex.getColumn('ByValue'), cf = filter.getColumnFilter(col); cf.filterType = FilterType.Value; ```
このプロパティのデフォルト値は**FilterType.Both**です。
filterTextプロパティで選択された値のみをフィルタに含めるかどうかを決定する値を取得または設定します。
このプロパティのデフォルト値は**true**です。この動作はExcelと同じです。
この動作を無効にするには、このプロパティをfalseに設定します。 その場合、リストに表示される項目のみが検索され、 フィルタに含まれる項目が検索されません。
フィルタを持つ列の名前またはバインディングを含む配列を取得または設定します。
このプロパティをnullまたは空の配列に設定すると、すべての列にフィルタが追加されます。
現在のフィルタ定義をJSON文字列として取得または設定します。
filterDefinition には、現在アクティブな列フィルターに関する情報が含まれます。 データマップはシリアル化できないため、dataMap プロパティは含まれていません。
FlexGridFilter がグリッドの列ヘッダにフィルタ編集ボタンを 追加するかどうかを示す値を取得または設定します。
このプロパティをfalseに設定した場合は、ユーザーがフィルタを編集、クリア、および適用する手段を開発者が提供する必要があります。
このプロパティのデフォルト値は**true**です。
フィルタエディタにソートボタンが表示されるかどうかを示す値を取得または設定します。
デフォルトでは、エディタにはExcelと同じようにソートボタンが表示されます。 しかし、ユーザーはヘッダをクリックすることによって列をソートできるので、 フィルタエディタにソートボタンがあるのは望ましくない場合があります。 このプロパティのデフォルト値は です。
このプロパティのデフォルト値は**true**です。
apply(): void
現在の列フィルタをグリッドに適用します。
clear(): void
すべての列フィルタをクリアします。
closeEditor(): void
フィルタエディタを閉じます。
editColumnFilter(col: any, ht?: HitTestInfo, ref?: HTMLElement): void
指定したグリッド列のフィルタエディタを表示します。
The Column that contains the filter to edit.
A HitTestInfo object containing the range of the cell that triggered the filter display.
An HTMLElement to use as a reference for positioning the editor.
getColumnFilter(col: Column | string | number, create?: boolean): ColumnFilter
指定した列のフィルタを取得します。
The Column that the filter applies to (or column name or index). If the specified column does not exist, the method returns null.
Whether to create the filter if it does not exist.
onEditingFilter(e: CellRangeEventArgs): void
editingFilterイベントを発生させます。
CellRangeEventArgs that contains the event data.
onFilterApplied(e?: EventArgs): void
filterAppliedイベントを発生させます。
onFilterChanged(e: CellRangeEventArgs): void
filterChangedイベントを発生させます。
onFilterChanging(e: CellRangeEventArgs): boolean
filterChangingイベントを発生させます。
CellRangeEventArgs that contains the event data.
ユーザーが列フィルタを編集しようとしたときに発生します。フィルタのデフォルトの設定をオーバーライドする場合は、このイベントを使用して列フィルタをカスタマイズします。
このイベントは、フィルターエディターが作成される前に発生します。 この時点では、activeEditorプロパティはnullです。 エディタをカスタマイズする場合は、filterChangingイベントを使用してください。
たとえば、以下のコードでは、値フィルターエディターで国名のリストをカスタマイズします。この場合、「Italy」が常に最初の値になります。
```typescript new FlexGridFilter(theGrid, { editingFilter: (s, e) => { if (e.getColumn().binding == 'country') {
// Italyから始まります。 let vals = ["Italy"];
// Italyを除き、他の一意の値を追加します。 let valueFilter = s.getColumnFilter("country", true).valueFilter; valueFilter.uniqueValues = null; valueFilter.getUniqueValues().forEach(item => { if (item.text != "Italy") { vals.push(item.text); } });
// カスタムの一意の値リストをvalueFilterに割り当てます。 valueFilter.uniqueValues = vals; valueFilter.sortValues = false; } } }); ```
ユーザーが列フィルタを編集した後で発生します。
イベントパラメータを使用して、フィルタを所有する列を判定し、変更が適用されたかキャンセルされたかを判定します。
ユーザーが列フィルタを編集しようとしたときに発生します。
デフォルト設定を上書きする場合は、このイベントを使用してフィルターエディターをカスタマイズします。 現在アクティブなフィルターエディターへの参照を取得するには、activeEditorプロパティを使用します。
たとえば、以下のコードでは、値フィルターエディターで国名のリストをカスタマイズします。 この場合、「Italy」が常に最初の値になります。
```typescript new FlexGridFilter(theGrid, { filterChanging: (s, e) => { if (e.getColumn().binding == "country") { let edt = s.activeEditor, lbHost = edt.hostElement.querySelector('[wj-part=div-values]'), lb = Control.getControl(lbHost) as ListBox; (lb.collectionView as CollectionView).sortComparer = (a: any, b: any) => { if (a != b) { // 最初にItalyを並べ替えます。 if (a == 'Italy') return -1; if (b == 'Italy') return +1; } return null; // デフォルトの並べ替え順を使用します。 } lb.collectionView.refresh(); } }, }); ```
FlexGrid コントロールのExcelスタイルのフィルタを実装します。
FlexGrid コントロールでフィルタリングを有効にするには、FlexGridFilter のインスタンスを作成し、コンストラクターのパラメーターとしてグリッドを渡します。
```typescript import { FlexGrid } from '@grapecity/wijmo.grid'; import { FlexGridFilter } from '@grapecity/wijmo.grid.filter'; let flex = new FlexGrid('#theGrid'); // グリッドを作成します。 let filter = new FlexGridFilter(flex); // グリッドにフィルタを追加します。 ```
そうすると、グリッドの列ヘッダにフィルタアイコンが追加されます。 このアイコンをクリックするとエディタが表示され、そこでその列のフィルタ条件を編集できます。
FlexGridFilterクラスは**wijmo.grid**および**wijmo.input**モジュールに依存します。
次の例では、FlexGridFilter を使用してFlexGrid コントロールにフィルタ処理を追加する方法を示しています。
{@sample Grid/FilteringSearching/Excel-likeFilter/Overview/purejs デモ}