|
列ヘッダのクリック
列ヘッダのクリックでソートを実行する場合、ヘッダによるセルの選択操作の有効/無効によって操作が異なります。
ヘッダによるセル選択が有効な場合
ColumnHeaderCell.SortModeプロパティにAutomaticを設定し、ColumnHeaderCell.SelectionModeプロパティ(HeaderCell.SelectionModeプロパティ)にContainedCells、IntersectedCellsまたはAllRowsのいずれかを設定すると、列ヘッダのソートインジケータをクリックしたときにソートが実行されます。ヘッダによるセル選択が無効な場合
ColumnHeaderCell.SortModeプロパティにAutomaticを設定し、ColumnHeaderCell.SelectionModeプロパティにNoneを設定すると、列ヘッダのどこをクリックしてもソートが実行されます。
次のサンプルコードでは、1列目は列ヘッダのどこをクリックしてもソートを行い、2列目は列ヘッダのソートインジケータをクリックしたときのみソートを行います。また、2列目の列ヘッダではソートインジケータ以外の部分をクリックすると列の選択を行います。
Imports GrapeCity.Win.MultiRow Dim Template1 As Template = Template.CreateGridTemplate(2) ' 列ヘッダのソートインジケータをクリックしたときにソートを実行する Dim ColumnHeaderCell1 As ColumnHeaderCell = DirectCast(Template1.ColumnHeaders(0).Cells(0), ColumnHeaderCell) ColumnHeaderCell1.SelectionMode = MultiRowSelectionMode.ContainedCells ColumnHeaderCell1.SortMode = SortMode.Automatic ' 列ヘッダのどこをクリックしてもソートを実行する Dim ColumnHeaderCell2 As ColumnHeaderCell = DirectCast(Template1.ColumnHeaders(0).Cells(1), ColumnHeaderCell) ColumnHeaderCell2.SelectionMode = MultiRowSelectionMode.None ColumnHeaderCell2.SortMode = SortMode.Automatic GcMultiRow1.Template = Template1 GcMultiRow1.AllowUserToAddRows = False ' サンプルデータの入力 GcMultiRow1.RowCount = 3 GcMultiRow1.SetValue(0, 0, 1) GcMultiRow1.SetValue(1, 0, 3) GcMultiRow1.SetValue(2, 0, 2) GcMultiRow1.SetValue(0, 1, 1) GcMultiRow1.SetValue(1, 1, 3) GcMultiRow1.SetValue(2, 1, 2)
using GrapeCity.Win.MultiRow; Template template1 = Template.CreateGridTemplate(2); // 列ヘッダのソートインジケータをクリックしたときにソートを実行する ColumnHeaderCell columnHeaderCell1 = (ColumnHeaderCell)template1.ColumnHeaders[0].Cells[0]; columnHeaderCell1.SelectionMode = MultiRowSelectionMode.ContainedCells; columnHeaderCell1.SortMode = SortMode.Automatic; // 列ヘッダのどこをクリックしてもソートを実行する ColumnHeaderCell columnHeaderCell2 = (ColumnHeaderCell)template1.ColumnHeaders[0].Cells[1]; columnHeaderCell2.SelectionMode = MultiRowSelectionMode.None; columnHeaderCell2.SortMode = SortMode.Automatic; gcMultiRow1.Template = template1; gcMultiRow1.AllowUserToAddRows = false; // サンプルデータの入力 gcMultiRow1.RowCount = 3; gcMultiRow1.SetValue(0, 0, 1); gcMultiRow1.SetValue(1, 0, 3); gcMultiRow1.SetValue(2, 0, 2); gcMultiRow1.SetValue(0, 1, 1); gcMultiRow1.SetValue(1, 1, 3); gcMultiRow1.SetValue(2, 1, 2);
ソートの状態は列ヘッダ上に「並べ替えグリフ」で表示されます。並べ替えグリフの状態は、ColumnHeaderCell.SortGlyphDirectionプロパティで取得または設定できます。
ColumnHeaderCell.SortModeプロパティをAutomaticに設定しているとき、ソートの方法は昇順または降順で固定です。任意のソートを使用するには、ColumnHeaderCell.SortModeプロパティをProgrammaticに設定し、GcMultiRow.SortCompareイベントを使用します。
ドロップダウンリストの設定
ドロップダウンリストによる並び替えを設定するには、ColumnHeaderCell.DropDownListプロパティに HeaderDropDownListクラスのインスタンスを設定します。このとき、並び替えのコマンドを有効にするためにコンストラクタの第三引数にTrueを設定します。
ソート対象とする行の範囲はHeaderDropDownList.StartRowプロパティおよびHeaderDropDownList.EndRowプロパティで設定します。
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", False, True) GcMultiRow1.Template = Template1 GcMultiRow1.AllowUserToAddRows = False ' サンプルデータの入力 GcMultiRow1.RowCount = 3 GcMultiRow1.Rows(0)("textBoxCell1").Value = 2 GcMultiRow1.Rows(1)("textBoxCell1").Value = 1 GcMultiRow1.Rows(2)("textBoxCell1").Value = 3
using GrapeCity.Win.MultiRow; Template template1 = Template.Default; ColumnHeaderCell columnHeaderCell1 = (ColumnHeaderCell)template1.ColumnHeaders[0].Cells[0]; columnHeaderCell1.DropDownList = new HeaderDropDownList("textBoxCell1", false, true); gcMultiRow1.Template = template1; gcMultiRow1.AllowUserToAddRows = false; // サンプルデータの入力 gcMultiRow1.RowCount = 3; gcMultiRow1.Rows[0]["textBoxCell1"].Value = 2; gcMultiRow1.Rows[1]["textBoxCell1"].Value = 1; gcMultiRow1.Rows[2]["textBoxCell1"].Value = 3;
ソート対象とする行の範囲はHeaderDropDownList.StartRowプロパティおよびHeaderDropDownList.EndRowプロパティで設定します。
ソートのインジケータ
ソート時に列ヘッダ型セルに表示するインジケータに任意の画像を表示できます。インジケータの画像は次の3つの状態に対してそれぞれ設定できます。
- デフォルト(ColumnHeaderCell.SortGlyphDefaultImageプロパティ)
- 昇順(ColumnHeaderCell.SortGlyphAscendingImageプロパティ)
- 降順(ColumnHeaderCell.SortGlyphDescendingImageプロパティ)
|
Imports GrapeCity.Win.MultiRow Dim Template1 As Template = Template.Default Dim ColumnHeaderCell1 As ColumnHeaderCell = DirectCast(Template1.ColumnHeaders(0).Cells(0), ColumnHeaderCell) ColumnHeaderCell1.SelectionMode = MultiRowSelectionMode.None ColumnHeaderCell1.SortMode = SortMode.Automatic ColumnHeaderCell1.Value = "(クリック)" ColumnHeaderCell1.SortGlyphDefaultImage = New Bitmap("test1.bmp") ColumnHeaderCell1.SortGlyphAscendingImage = New Bitmap("test2.bmp") ColumnHeaderCell1.SortGlyphDescendingImage = New Bitmap("test3.bmp") GcMultiRow1.Template = Template1 GcMultiRow1.AllowUserToAddRows = False ' サンプルデータの入力 GcMultiRow1.RowCount = 3 GcMultiRow1.Rows(0)("textBoxCell1").Value = 2 GcMultiRow1.Rows(1)("textBoxCell1").Value = 1 GcMultiRow1.Rows(2)("textBoxCell1").Value = 3
using GrapeCity.Win.MultiRow; Template template1 = Template.Default; ColumnHeaderCell columnHeaderCell1 = (ColumnHeaderCell)template1.ColumnHeaders[0].Cells[0]; columnHeaderCell1.SelectionMode = MultiRowSelectionMode.None; columnHeaderCell1.SortMode = SortMode.Automatic; columnHeaderCell1.Value = "(クリック)"; columnHeaderCell1.SortGlyphDefaultImage = new Bitmap("test1.bmp"); columnHeaderCell1.SortGlyphAscendingImage = new Bitmap("test2.bmp"); columnHeaderCell1.SortGlyphDescendingImage = new Bitmap("test3.bmp"); gcMultiRow1.Template = template1; gcMultiRow1.AllowUserToAddRows = false; // サンプルデータの入力 gcMultiRow1.RowCount = 3; gcMultiRow1.Rows[0]["textBoxCell1"].Value = 2; gcMultiRow1.Rows[1]["textBoxCell1"].Value = 1; gcMultiRow1.Rows[2]["textBoxCell1"].Value = 3;