SPREAD for WPF 4.0J - GcSpreadGrid
フィルタリングの基本
MESCIUS SPREAD for WPF 4.0J > 開発者ガイド > フィルタリング > フィルタリングの基本

ユーザーに対してフィルタリングの機能を有効にできます。この操作をすべての列で有効にするには、コントロールの 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 に設定します。

関連トピック