ユーザーに対してフィルタリングの機能を有効にできます。この操作をすべての列で有効にするには、コントロールの CanUserFilterColumns プロパティを、特定の列に対して有効にするには、列の CanUserFilter プロパティをいずれもtrueに設定します。
フィルタリングを有効にすると、列ヘッダにフィルタボタンが表示されます。ユーザーがフィルタボタンをクリックすると、ドロップダウンリストが表示され、チェックボックスにより表示項目を選択できるほか、テキストフィルタや数値フィルタ、日付フィルタから詳細なフィルタ条件を指定することができます。また、検索テキストボックスでの文字入力に対するフィルタにも対応します。
フィルタリングが実行されると、コントロールのFiltered イベントが発生します。このとき、イベントパラメータのAction プロパティからは、Filtered イベントが発生したアクションを示すFilterAction 列挙体を取得できます。ユーザー操作によりフィルタリングが行われたときは、Action プロパティには、 FilterAction.FilterConditionChanged が設定されます。このとき、イベントパラメータのColumn プロパティからはフィルタリングが行われた列のインデックスを取得できます。なお、Action プロパティがFilterAction.FilterConditionChanged 以外の場合は Column プロパティは常に-1が設定されます。
フィルタリングが行われるとRowCollectionChanged イベントも発生します。 このときイベントパラメータのAction プロパティには Reset が設定されますが、これは、コントロールをデータソースに連結したときなども同様です。
次のサンプルコードは、Filteredイベントの実装例です。
XAML |
コードのコピー |
---|---|
<sg:GcSpreadGrid x:Name="gcSpreadGrid1" CanUserFilterColumns="True" Filtered="gcSpreadGrid1_Filtered" /> |
C# |
コードのコピー |
---|---|
private void gcSpreadGrid1_Filtered(object sender, GrapeCity.Windows.SpreadGrid.FilteredEventArgs e) { if (e.Action == FilterAction.FilterConditionChanged) { Console.WriteLine(e.Column + "列目でフィルタリングが実行されました。"); } else if (e.Action == FilterAction.DataChanged) { Console.WriteLine("データが変更されました。"); } else if(e.Action == FilterAction.DataReset) { Console.WriteLine("データがリセットされました。"); } } |
Visual Basic |
コードのコピー |
---|---|
Private Sub GcSpreadGrid1_Filtered(sender As Object, e As GrapeCity.Windows.SpreadGrid.FilteredEventArgs) If e.Action = FilterAction.FilterConditionChanged Then Console.WriteLine(e.Column + "列目でフィルタリングが実行されました。") ElseIf e.Action = FilterAction.DataChanged Then Console.WriteLine("データが変更されました。") ElseIf e.Action = FilterAction.DataReset Then Console.WriteLine("データがリセットされました。") End If End Sub |
先頭および末尾の行が固定されているとき、FilterIgnoreFrozenRows プロパティを使用して固定行をフィルタリングの対象外とするかどうかを設定できます。フィルタリングの対象外とするにはこのプロパティを true に設定します。
グループ集計 を行う際に集計結果からフィルタ行を除外することができます。グループヘッダ/フッタセルのAggregationType プロパティに設定するAggregationType 列挙体から非表示セルを除くメンバを指定します。詳細については「グループ集計の基本」を参照してください。
デフォルトでは、フィルタリングを実行した後でデータを入力または変更すると、新たなデータにもとづいてフィルタリング処理が自動的に実行されます。セルの入力直後に自動的にフィルタリングが行われるため、データ入力作業中にこの動作を抑止したい場合は、AutoSortFilter プロパティを false に設定します。