PowerTools SPREAD for ASP.NET 8.0J
条件フィルタリング

条件フィルタリングを適用すると、列ヘッダ領域の下にフィルタバーが表示され、すべての列内にフィルタを適用できます。フィルタバーを使用して詳細な条件を指定したフィルタリングが可能になります。

フィルタバーは、テキストボックス、選択メニュー、およびフィルタアイコンによって構成されます。 ユーザーはテキストボックスにフィルタ条件の対象値を入力し、ドロップダウンからフィルタ条件を選択することで、このフィルタを適用できます。

フィルタバーに表示されるメニューオプションの種類(数値、日時、拡張データ、またはテキスト)を指定することができます。メニューの種類に日付を選択すると、フィルタバーには日付ピッカーも表示されます。自動オプションを選択すると、列内のデータの種類に応じたメニューオプションが自動的に表示されます。

次の図では、列Bのフィルタバーに日付ピッカーが表示されています。

日付ピッカー

テキスト、数値、および日付に対するメニューオプションの一覧は次のとおりです。

フィルタ メニューオプション
テキスト 指定の値を含む
指定の値を含まない
から開始する
指定の値で終わる
指定の値に等しい
指定の値に等しくない
指定の範囲内…
指定された範囲外…
空
空ではない
Null
Nullではない
数値と日時 指定の値に等しい
指定の値に等しくない
指定の値より大きい
指定の値より小さい
指定の値以上
指定の値以下
指定の範囲内…
指定された範囲外…
Null
Nullではない

設定方法

条件フィルタリングを適用するには、SheetView クラスのAutoFilterMode プロパティ をAutoFilterMode.FilterBarに設定します。

フィルタバーは、SheetView クラスのFilterBar プロパティが参照するFilterBar クラスを使用して設定します。

フィルタバーの各列のフィルタコンテンツは、フィルタバー専用のセル型であるFilterBarCellType クラスで設定します。FilterBarCellType クラスのMenuType プロパティを使用してメニューオプションを設定します。FilterMenuType.Dateに設定したとき日付ピッカーの書式を設定するには、DateTimeFormatまたはFormatString プロパティプロパティを使用します。

なお、これらのプロパティを使用する場合は、ScriptManager が必要で、ScriptManager のEnableGlobalization プロパティをtrueに設定します。

カスタマイズしたフィルタバーセル型は、FilterBarCellType クラスを使用して設定します。FilterBarCellType オブジェクトを、FilterBar クラスのDefaultHeaderStyle プロパティが参照するスタイルのCellType プロパティに設定します。

サンプルコード

次のサンプルコードは、フィルタバーをカスタマイズして条件フィルタリングを適用します。

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack) return;
    for (int i = 0; i < FpSpread1.ActiveSheetView.RowCount; i++)
        for (int j = 0; j < FpSpread1.ActiveSheetView.ColumnCount; j++)
        {
            FpSpread1.ActiveSheetView.Cells[i, j].Value = i + j;
        }
 
    FarPoint.Web.Spread.FilterBarCellType fbc = new FarPoint.Web.Spread.FilterBarCellType();
    fbc.MenuType = FarPoint.Web.Spread.FilterMenuType.Auto;
    FpSpread1.ActiveSheetView.FilterBar.DefaultStyle.CellType = fbc;
    FpSpread1.ActiveSheetView.AutoFilterMode = FarPoint.Web.Spread.AutoFilterMode.FilterBar;
}
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If (IsPostBack) Then
        Return
    End If
    For i As Integer = 0 To FpSpread1.ActiveSheetView.RowCount - 1
        For j As Integer = 0 To FpSpread1.ActiveSheetView.ColumnCount - 1
            FpSpread1.ActiveSheetView.Cells(i, j).Value = i + j
        Next
    Next
    Dim fbc As New FarPoint.Web.Spread.FilterBarCellType()
    fbc.MenuType = FarPoint.Web.Spread.FilterMenuType.Auto
    FpSpread1.ActiveSheetView.FilterBar.DefaultStyle.CellType = fbc
    FpSpread1.ActiveSheetView.AutoFilterMode = FarPoint.Web.Spread.AutoFilterMode.FilterBar
End Sub

関連トピック

 

 


© 2003-2015, GrapeCity inc. All rights reserved.