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