MESCIUS MultiRow for Windows Forms 12.0J
列ヘッダによる行の並び替え

ColumnHeaderCellを使用すると、ヘッダのクリックまたはドロップダウンリストのコマンドを使用して行の並び替えを実行できます。

列ヘッダのドロップダウン
  • 仮想モードが有効のとき、並び替えは使用できません。
  • 新規行は並べ替えの対象ではありません。

列ヘッダのクリック

列ヘッダのクリックでソートを実行する場合、ヘッダによるセルの選択操作の有効/無効によって操作が異なります。

ヘッダによるセル選択が有効な場合

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を設定します。

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つの状態に対してそれぞれ設定できます。

  • ソートのインジケータはズームに対応していません。
次のコードは、ソートが実行されたときのインジケータの画像を設定します。

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;
   
関連トピック

 

 


© MESCIUS inc. All rights reserved.