|
単一のセル値からの行の並び替え
単一のセルの値を元に行を並び替えるには、GcMultiRow.Sortメソッドを使用します。Sortメソッドでは、ソートの基準となるセル、昇順または降順、大文字小文字の区別を指定できます。
次のコードは既定のテンプレートを使用して、2番目のセルの値を基準に用を並び替えます。
Sortメソッドを使用した結果、グリッドの現在のソート状態を取得するには GcMultiRow.SortOrderプロパティを使用します。
次のコードは既定のテンプレートを使用して、2番目のセルの値を基準に用を並び替えます。
Imports GrapeCity.Win.MultiRow ' 既定のテンプレートを設定する GcMultiRow1.Template = Template.Default GcMultiRow1.AllowUserToAddRows = False GcMultiRow1.RowCount = 5 ' サンプルデータを設定する GcMultiRow1.Rows(0).SetValues(New String(2) {"E", "1", "VB"}) GcMultiRow1.Rows(1).SetValues(New String(2) {"D", "2", "VB"}) GcMultiRow1.Rows(2).SetValues(New String(2) {"C", "3", "CS"}) GcMultiRow1.Rows(3).SetValues(New String(2) {"B", "4", "VB"}) GcMultiRow1.Rows(4).SetValues(New String(2) {"A", "5", "CS"}) ' 最初のセルを基準に昇順で並び替える GcMultiRow1.Sort(0, SortOrder.Ascending)
using GrapeCity.Win.MultiRow; // 既定のテンプレートを設定する gcMultiRow1.Template = Template.Default; gcMultiRow1.AllowUserToAddRows = false; gcMultiRow1.RowCount = 5; // サンプルデータを設定する gcMultiRow1.Rows[0].SetValues(new string[3] {"E", "1", "VB"}); gcMultiRow1.Rows[1].SetValues(new string[3] {"D", "2", "VB"}); gcMultiRow1.Rows[2].SetValues(new string[3] {"C", "3", "CS"}); gcMultiRow1.Rows[3].SetValues(new string[3] {"B", "4", "VB"}); gcMultiRow1.Rows[4].SetValues(new string[3] {"A", "5", "CS"}); // 最初のセルを基準に昇順で並び替える gcMultiRow1.Sort(0, SortOrder.Ascending);
Sortメソッドを使用した結果、グリッドの現在のソート状態を取得するには GcMultiRow.SortOrderプロパティを使用します。
複数のセル値からの行の並び替え
最初のセルに同じ値が存在する場合に次のセルを基準にする、といった要件で並び替えを実行する場合、SortItemクラスのインスタンスで並び替えの条件を設定します。
Imports GrapeCity.Win.MultiRow ' 既定のテンプレートを設定する GcMultiRow1.Template = Template.Default GcMultiRow1.AllowUserToAddRows = False GcMultiRow1.RowCount = 5 ' サンプルデータを設定する GcMultiRow1.Rows(0).SetValues(New String(2) {"B", "1", "VB"}) GcMultiRow1.Rows(1).SetValues(New String(2) {"B", "2", "VB"}) GcMultiRow1.Rows(2).SetValues(New String(2) {"C", "3", "CS"}) GcMultiRow1.Rows(3).SetValues(New String(2) {"B", "4", "VB"}) GcMultiRow1.Rows(4).SetValues(New String(2) {"A", "5", "CS"}) ' 並び替えの基準を作成する Dim sortItem1 As New SortItem(0, SortOrder.Ascending) Dim sortItem2 As New SortItem(1, SortOrder.Ascending) ' 行を並び替える GcMultiRow1.Sort(New SortItem(1) {sortItem1, sortItem2}, 0, GcMultiRow1.RowCount - 1)
using GrapeCity.Win.MultiRow; // 既定のテンプレートを設定する gcMultiRow1.Template = Template.Default; gcMultiRow1.AllowUserToAddRows = false; gcMultiRow1.RowCount = 5; // サンプルデータを設定する gcMultiRow1.Rows[0].SetValues(new string[3] {"B", "1", "VB"}); gcMultiRow1.Rows[1].SetValues(new string[3] {"B", "2", "VB"}); gcMultiRow1.Rows[2].SetValues(new string[3] {"C", "3", "CS"}); gcMultiRow1.Rows[3].SetValues(new string[3] {"B", "4", "VB"}); gcMultiRow1.Rows[4].SetValues(new string[3] {"A", "5", "CS"}); // 並び替えの基準を作成する SortItem sortItem1 = new SortItem(0, SortOrder.Ascending); SortItem sortItem2 = new SortItem(1, SortOrder.Ascending); // 行を並び替える gcMultiRow1.Sort(new SortItem[2] {sortItem1, sortItem2}, 0, gcMultiRow1.RowCount - 1);
ユーザー定義ソート
並び替えの基準を独自に作成するには、System.Collections.IComparerインターフェイスを実装するクラスを作成し、そのインスタンスをGcMultiRow.Sortメソッドに割り当てます。
次のコードでは、値よりもNullを優先して並び替えます。
次のコードでは、値よりもNullを優先して並び替えます。
Imports GrapeCity.Win.MultiRow ' 既定のテンプレートを設定する GcMultiRow1.Template = Template.Default GcMultiRow1.AllowUserToAddRows = False GcMultiRow1.RowCount = 5 ' サンプルデータを設定する GcMultiRow1.Rows(0).Cells(0).Value = 3 GcMultiRow1.Rows(1).Cells(0).Value = 1 GcMultiRow1.Rows(2).Cells(0).Value = 2 GcMultiRow1.Rows(3).Cells(0).Value = Nothing GcMultiRow1.Rows(4).Cells(0).Value = 0 ' 行を並び替える GcMultiRow1.Sort(0, SortOrder.Ascending, New NullComparer()) ' Null を優先して並び替える Public Class NullComparer Implements System.Collections.IComparer Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _ Implements System.Collections.IComparer.Compare If x = y Then Return 0 End If If x Is Nothing Then Return -1 End If If y Is Nothing Then Return 1 End If Dim ix As Integer = DirectCast(x, Integer) Dim iy As Integer = DirectCast(y, Integer) Return ix - iy End Function End Class
using GrapeCity.Win.MultiRow; // 既定のテンプレートを設定する gcMultiRow1.Template = Template.Default; gcMultiRow1.AllowUserToAddRows = false; gcMultiRow1.RowCount = 5; // サンプルデータを設定する gcMultiRow1.Rows[0].Cells[0].Value = 3; gcMultiRow1.Rows[1].Cells[0].Value = 1; gcMultiRow1.Rows[2].Cells[0].Value = 4; gcMultiRow1.Rows[3].Cells[0].Value = null; gcMultiRow1.Rows[4].Cells[0].Value = 0; // 行を並び替える gcMultiRow1.Sort(0, SortOrder.Ascending, new NullComparer()); // Null を優先して並び替える public class NullComparer : System.Collections.IComparer { int System.Collections.IComparer.Compare(object x, object y) { if (x == y) return 0; if (x == null) return -1; if (y == null) return 1; int ix = (int)x; int iy = (int)y; return ix - iy; } }