![列ヘッダのドロップダウン](images/userguide/Header_Filter_DropDown.png)
![]() |
|
ドロップダウンリストの設定
ドロップダウンリストを設定するには、ColumnHeaderCell.DropDownListプロパティにHeaderDropDownListクラスのインスタンスを設定します。このとき、フィルタのコマンドを有効にするためにコンストラクタの第二引数にTrueを設定します。
Imports GrapeCity.Win.MultiRow Dim Template1 As Template = Template.Default Dim ColumnHeaderCell1 As ColumnHeaderCell = _ DirectCast(Template1.ColumnHeaders(0).Cells(0), ColumnHeaderCell) ColumnHeaderCell1.DropDownList = _ New HeaderDropDownList("textBoxCell1", True, False) Template1.Row.Cells("textBoxCell1").Style.BackColor = Color.Azure GcMultiRow1.Template = Template1
using GrapeCity.Win.MultiRow; Template template1 = Template.Default; ColumnHeaderCell columnHeaderCell = template1.ColumnHeaders[0].Cells[0] as ColumnHeaderCell; columnHeaderCell.DropDownList = new HeaderDropDownList("textBoxCell1", true, false); template1.Row.Cells["textBoxCell1"].Style.BackColor = Color.Azure; gcMultiRow1.Template = template1;
フィルタ範囲の指定
フィルタ対象とする行の範囲はHeaderDropDownList.StartRowおよびHeaderDropDownList.EndRowプロパティで設定します。
値のカウント
既定の設定では、フィルタ対象となる行の範囲で、最初の1,000件までの異なる値がカウントされます。この値はDropDownAutoFilterItem.MaxCountプロパティで確認できます。DropDownAutoFilterItemクラスは、異なる値を元に動的にフィルタの候補を作成します。
フィルタのためにカウントする値を削減すると、ドロップダウンの表示にかかるパフォーマンスを改善できます。次のコードは、最初の100件までの異なる値に変更します。
フィルタのためにカウントする値を削減すると、ドロップダウンの表示にかかるパフォーマンスを改善できます。次のコードは、最初の100件までの異なる値に変更します。
Imports GrapeCity.Win.MultiRow Dim Template1 As Template = Template.Default Dim ColumnHeaderCell1 As ColumnHeaderCell = _ DirectCast(Template1.ColumnHeaders(0).Cells(0), ColumnHeaderCell) Dim HeaderDropDownList1 As HeaderDropDownList = _ New HeaderDropDownList("textBoxCell1", True, False) For Each item As DropDownItem In HeaderDropDownList1.Items If TypeOf item Is DropDownAutoFilterItem Then Dim dropDownAutoFilterItem As DropDownAutoFilterItem = _ DirectCast(item, DropDownAutoFilterItem) dropDownAutoFilterItem.MaxCount = 100 End If Next ColumnHeaderCell1.DropDownList = HeaderDropDownList1 Template1.Row.Cells("textBoxCell1").Style.BackColor = Color.Azure GcMultiRow1.Template = Template1 ' サンプル データを設定する GcMultiRow1.AllowUserToAddRows = False GcMultiRow1.RowCount = 200 For i As Integer = 0 To GcMultiRow1.RowCount - 1 GcMultiRow1(i, "textBoxCell1").Value = i.ToString() Next
using GrapeCity.Win.MultiRow; Template template1 = Template.Default; ColumnHeaderCell columnHeaderCell1 = template1.ColumnHeaders[0].Cells[0] as ColumnHeaderCell; HeaderDropDownList headerDropDownList1 = new HeaderDropDownList("textBoxCell1", true, false); foreach (DropDownItem item in headerDropDownList1.Items) { if (item is DropDownAutoFilterItem) { DropDownAutoFilterItem dropDownAutoFilterItem = item as DropDownAutoFilterItem; dropDownAutoFilterItem.MaxCount = 100; } } columnHeaderCell1.DropDownList = headerDropDownList1; template1.Row.Cells["textBoxCell1"].Style.BackColor = Color.Azure; gcMultiRow1.Template = template1; // サンプル データを設定する gcMultiRow1.AllowUserToAddRows = false; gcMultiRow1.RowCount = 200; for (int i = 0; i < gcMultiRow1.RowCount; i++) { gcMultiRow1[i, "textBoxCell1"].Value = i.ToString(); }
フィルタのクリア
フィルタのインジケータ
インジケータ画像の表示
ColumnHeaderCell.DropDownButtonImagesプロパティを使用すると、フィルタのドロップダウンボタンにインジケータの画像を設定できます。ColumnHeaderCell.DropDownButtonImagesプロパティの設定を有効にするには、ColumnHeaderCell.ShowDropDownButtonImagesプロパティをTrueに設定します。
インジケータの画像は15ピクセル×15ピクセルの枠内に表示されます。
![]() |
|
次のコードは、フィルタが実行されたときのインジケータの画像を設定します。
Imports GrapeCity.Win.MultiRow Dim Template1 As Template = Template.Default Dim ColumnHeaderCell1 As ColumnHeaderCell = DirectCast(Template1.ColumnHeaders(0).Cells(0), ColumnHeaderCell) Dim HeaderDropDownList1 As New HeaderDropDownList() HeaderDropDownList1.Items.Add(New DropDownAutoFilterItem()) ColumnHeaderCell1.FilterCellName = "textBoxCell1" ColumnHeaderCell1.DropDownList = HeaderDropDownList1 ColumnHeaderCell1.DropDownButtonImages.Filtered = New Bitmap("test.bmp") ColumnHeaderCell1.ShowDropDownButtonImages = True GcMultiRow1.Template = Template1
using GrapeCity.Win.MultiRow; Template template1 = Template.Default; ColumnHeaderCell columnHeaderCell1 = template1.ColumnHeaders[0].Cells[0] as ColumnHeaderCell; HeaderDropDownList headerDropDownList1 = new HeaderDropDownList(); headerDropDownList1.Items.Add(new DropDownAutoFilterItem()); columnHeaderCell1.FilterCellName = "textBoxCell1"; columnHeaderCell1.DropDownList = headerDropDownList1; columnHeaderCell1.DropDownButtonImages.Filtered = new Bitmap(@"test.bmp"); columnHeaderCell1.ShowDropDownButtonImages = true; gcMultiRow1.Template = template1;
ドロップダウンボタン表示効果の無効化
インジケータの画像はフィルタのドロップダウンボタン上に表示されるため、画像を設定している場合でもドロップダウンボタンはボタンの表示効果を持っています。
例えば、マウスホバー時にはボタンの枠線がハイライト表示されたり、画像の背景を透過にしてヘッダセルの背景色を設定した場合には枠線が表示されます。
このようなボタンの表示効果を無効にするには、ColumnHeaderCell.HideDropDownButtonVisualEffectプロパティにTrueを設定します。
固定行をフィルタから除外
固定行をフィルタの対象から除外するには、GcMultiRow.ExcludeFreezeRowsWhenFilterプロパティにTrueを設定します。
次のコードは、グリッドの下部の10行をフィルタの対象から除外します。
![]() |
|
GcMultiRow1.FreezeBottomRowCount = 10
GcMultiRow1.ExcludeFreezeRowsWhenFilter = True
gcMultiRow1.FreezeBottomRowCount = 10;
gcMultiRow1.ExcludeFreezeRowsWhenFilter = true;
複数選択フィルタ
複数選択フィルタを設定するには、ColumnHeaderCell.DropDownContextMenuStripプロパティを使用します。HeaderDropDownContextMenu.ItemsプロパティにAutoFilterToolStripItemクラスのインスタンスを設定し、ColumnHeaderCell.DropDownContextMenuStripプロパティに設定することで複数選択フィルタが使用できます。
デザイナで複数選択フィルタを設定するには、次のように操作します。
![]() |
|
Imports GrapeCity.Win.MultiRow Dim TextBoxCell1 As New TextBoxCell() TextBoxCell1.Name = "TextBoxCell1" Dim Template1 As Template = Template1.CreateGridTemplate(New Cell() {TextBoxCell1}) Dim ColumnHeaderCell1 = DirectCast(Template1.ColumnHeaders(0).Cells(0), ColumnHeaderCell) ColumnHeaderCell1.DropDownList = New HeaderDropDownList("TextBoxCell1", False, False) Dim HeaderDropDownContextMenu1 As New HeaderDropDownContextMenu() HeaderDropDownContextMenu1.Items.Add(New AutoFilterToolStripItem()) ColumnHeaderCell1.DropDownContextMenuStrip = HeaderDropDownContextMenu1 GcMultiRow1.Template = Template1
using GrapeCity.Win.MultiRow; TextBoxCell textBoxCell1 = new TextBoxCell(); textBoxCell1.Name = "textBoxCell1"; Template template1 = Template.CreateGridTemplate(new Cell[] { textBoxCell1 }); ColumnHeaderCell columnHeaderCell1 = template1.ColumnHeaders[0].Cells[0] as ColumnHeaderCell; columnHeaderCell1.DropDownList = new HeaderDropDownList("textBoxCell1", false, false); template1.Row.Cells["textBoxCell1"].Style.BackColor = Color.Azure; HeaderDropDownContextMenu headerDropDownContextMenu1 = new HeaderDropDownContextMenu(); headerDropDownContextMenu1.Items.Add(new AutoFilterToolStripItem()); columnHeaderCell1.DropDownContextMenuStrip = headerDropDownContextMenu1; gcMultiRow1.Template = template1;
- 複数選択フィルタを設定するセルを選択する。(例: columnHeaderCell1)
- プロパティウィンドウでDropDownListプロパティを選択し、「フィルタドロップダウンリスト」を選択する。
- プロパティウィンドウでDropDownList.CellNameプロパティを選択し、フィルタを行うセルを選択する。(例: textBoxCell1)
- プロパティウィンドウでDropDownContextMenuStripプロパティを選択し、「<Add New>」を選択すると、テンプレート上にHeaderDropDownContextMenuが追加される(例: headerDropDownContextMenu1)
- HeaderDropDownContextMenuを選択して、Itemsプロパティを選択し、[...]ボタンをクリックする。
- 表示された「項目コレクション エディタ」の[メンバー]リストにshowAllToolStripItem1が設定されていることを確認する。
- [OK]ボタンをクリックしてウィンドウを閉じる。
- プロジェクトを実行する。
- columnHeaderCell1のドロップダウンリストを表示し、複数選択フィルタが表示されることを確認する。