ASP.NET MVC コントロールヘルプ
FlexGridFilter クラス
ファイル
wijmo.grid.filter.js
モジュール
wijmo.grid.filter
派生クラス
FlexSheetFilter

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 デモ}

コンストラクタ

プロパティ

メソッド

イベント

コンストラクタ

constructor

constructor(grid: FlexGrid, options?: any): FlexGridFilter

FlexGridFilterクラスの新しいインスタンスを初期化します。

パラメーター
戻り値
FlexGridFilter

プロパティ

activeEditor

アクティブなColumnFilterEditor を取得します。

このプロパティを使用すると、filterChanging イベントを処理するときに フィルターエディターをカスタマイズできます。フィルターが編集されていない場合はnullを返します。

ColumnFilterEditor

defaultFilterType

使用するデフォルトフィルタタイプを取得または設定します。

この値は特定の列のフィルタでオーバーライドできます。 たとえば、以下のサンプルコードは、"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**です。

FilterType

exclusiveValueSearch

filterTextプロパティで選択された値のみをフィルタに含めるかどうかを決定する値を取得または設定します。

このプロパティのデフォルト値は**true**です。この動作はExcelと同じです。

この動作を無効にするには、このプロパティをfalseに設定します。 その場合、リストに表示される項目のみが検索され、 フィルタに含まれる項目が検索されません。

boolean

filterColumns

フィルタを持つ列の名前またはバインディングを含む配列を取得または設定します。

このプロパティをnullまたは空の配列に設定すると、すべての列にフィルタが追加されます。

string[]

filterDefinition

現在のフィルタ定義をJSON文字列として取得または設定します。

filterDefinition には、現在アクティブな列フィルターに関する情報が含まれます。 データマップはシリアル化できないため、dataMap プロパティは含まれていません。

string

grid

このフィルタを所有するFlexGrid への参照を取得します。

FlexGrid

showFilterIcons

FlexGridFilter がグリッドの列ヘッダにフィルタ編集ボタンを 追加するかどうかを示す値を取得または設定します。

このプロパティをfalseに設定した場合は、ユーザーがフィルタを編集、クリア、および適用する手段を開発者が提供する必要があります。

このプロパティのデフォルト値は**true**です。

boolean

showSortButtons

フィルタエディタにソートボタンが表示されるかどうかを示す値を取得または設定します。

デフォルトでは、エディタにはExcelと同じようにソートボタンが表示されます。 しかし、ユーザーはヘッダをクリックすることによって列をソートできるので、 フィルタエディタにソートボタンがあるのは望ましくない場合があります。 このプロパティのデフォルト値は です。

このプロパティのデフォルト値は**true**です。

boolean

メソッド

apply

apply(): void

現在の列フィルタをグリッドに適用します。

戻り値
void

clear

clear(): void

すべての列フィルタをクリアします。

戻り値
void

closeEditor

closeEditor(): void

フィルタエディタを閉じます。

戻り値
void

editColumnFilter

editColumnFilter(col: any, ht?: HitTestInfo, ref?: HTMLElement): void

指定したグリッド列のフィルタエディタを表示します。

パラメーター
  • col: any

    The Column that contains the filter to edit.

  • ht: HitTestInfo Optional

    A HitTestInfo object containing the range of the cell that triggered the filter display.

  • ref: HTMLElement Optional

    An HTMLElement to use as a reference for positioning the editor.

戻り値
void

getColumnFilter

getColumnFilter(col: Column | string | number, create?: boolean): ColumnFilter

指定した列のフィルタを取得します。

パラメーター
  • col: wijmo.grid.Column | string | number

    The Column that the filter applies to (or column name or index). If the specified column does not exist, the method returns null.

  • create: boolean Optional

    Whether to create the filter if it does not exist.

戻り値
ColumnFilter

onEditingFilter

onEditingFilter(e: CellRangeEventArgs): void

editingFilterイベントを発生させます。

パラメーター
戻り値
void

onFilterApplied

onFilterApplied(e?: EventArgs): void

filterAppliedイベントを発生させます。

パラメーター
戻り値
void

onFilterChanged

onFilterChanged(e: CellRangeEventArgs): void

filterChangedイベントを発生させます。

パラメーター
戻り値
void

onFilterChanging

onFilterChanging(e: CellRangeEventArgs): boolean

filterChangingイベントを発生させます。

パラメーター
戻り値
boolean

イベント

editingFilter

ユーザーが列フィルタを編集しようとしたときに発生します。フィルタのデフォルトの設定をオーバーライドする場合は、このイベントを使用して列フィルタをカスタマイズします。

このイベントは、フィルターエディターが作成される前に発生します。 この時点では、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; } } }); ```

引数
CellRangeEventArgs

filterApplied

フィルタが適用された後に発生します。

引数
EventArgs

filterChanged

ユーザーが列フィルタを編集した後で発生します。

イベントパラメータを使用して、フィルタを所有する列を判定し、変更が適用されたかキャンセルされたかを判定します。

引数
CellRangeEventArgs

filterChanging

ユーザーが列フィルタを編集しようとしたときに発生します。

デフォルト設定を上書きする場合は、このイベントを使用してフィルターエディターをカスタマイズします。 現在アクティブなフィルターエディターへの参照を取得するには、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(); } }, }); ```

引数
CellRangeEventArgs