FlexGrid for WPF
フィルタリングを許可する
基本操作 > フィルタリング > フィルタリングを許可する

C1FlexGridFilter 拡張クラスを使用し、C1FlexGrid コントロールで列フィルタを実現する方法を紹介します。C1FlexGridFilter 拡張クラスは C1FlexGrid を拡張して Excel 形式のフィルタ処理を提供します。フィルタ処理を有効にすれば、グリッドの列ヘッダ上にマウスポインタを置いた際に、ドロップダウンアイコンが表示されます。このドロップダウンでは、列のフィルタを編集できます。フィルタには2種類のモードがあります。

値モード:このモードでは、列のすべての値がリストに表示されます。ユーザーは、表示する値の1つまたは2つをリストから選択できます。

条件モード:このモードでは、エディタが演算子と比較パラメータ(例えば、「より大きい」、「2.5」)から成る 2 つの条件を指定します。これらの条件自体は、AND または OR 演算子で組み合わされます。

エディタを使用してフィルタ処理の方法を指定できますし、コードで設定することも可能です。

デフォルト設定として、各行に Visible プロパティを設定するとフィルタ処理はグリッドに適用されます。そして、フィルタ基準を満たす行は表示し、満たさない行は非表示になります。このモードでは、フィルタ処理は全行数に影響は及ぼしませんので、簡単な LINQ 表現を用いてフィルタ基準を満たした行の数を計算できます。
なお、グリッドがフィルタ対応のデータソースと連結されている場合、フィルタの UseCollectionView プロパティを true に設定すると、フィルタをデータソースに直接適用できます(ICollectionView.Filter プロパティを使用)。そして、このモードを使用する場合はフィルタでの変更は行数に(同じデータソースと連結されている他のコントロールの項目数にも)影響を及ぼします。

【実行例】 値フィルタ(Default)

 

【実行例】 条件フィルタ(ByCondition)

 

 

フィルタリングを実現するサンプルコードについては、製品付属サンプル「ColumnFilter」をご参照ください。