GrapeCity.Win.MultiRow.v80 アセンブリ > GrapeCity.Win.MultiRow 名前空間 > GcMultiRow クラス > Sort メソッド : Sort(String,SortOrder,IComparer) メソッド |
例外 | 解説 |
---|---|
System.ArgumentNullException | cellNameがnull 参照 (Visual Basicでは Nothing)またはString.Emptyです。 |
System.ArgumentException | cellNameがRow内のどのCellの名前とも一致しません。 |
System.ComponentModel.InvalidEnumArgumentException | sortOrderが、列挙体System.Windows.Forms.SortOrderの有効な値ではありません。 |
System.InvalidOperationException | このメソッドは、Templateがnull 参照 (Visual Basicでは Nothing)の場合には使用できません。 または VirtualModeがtrueで、なおかつDataSourceがnull 参照 (Visual Basicでは Nothing)です。 |
このメソッドを使用すると、GcMultiRowクラスの並べ替え機能を高度にカスタマイズできます。高度にカスタマイズされた並べ替え操作を実装するために、ColumnHeaderCellのCellMouseClickイベントのイベントハンドラを記述し、System.Collections.IComparerインタフェースを実装するクラスのインスタンスをパラメーターとして指定してこのメソッドを呼び出すことができます。この場合は通常、SortModeプロパティをSortMode.Programmaticに設定して、並べ替えが自動的に行われないようにし、並べ替えグリフを表示するスペースを設けます。Programmatic並べ替えモードに設定されたセルで並べ替えるときは、SortGlyphDirectionプロパティを設定して、並べ替えグリフを自分で表示する必要があります。
AllowUserToAddRowsプロパティの値がtrueの場合は、最後の行が常に最後の行になります。この場合、並べ替え演算子は最後の行(コミットされていない新しい行)には作用しません。
void SortByCodeCustomCompare() { this.gcMultiRow1.Sort(0, SortOrder.Ascending, new StringNumberCompare()); } class StringNumberCompare : System.Collections.IComparer { public int Compare(object x, object y) { if (x is string && y is string) { int a; int b; if (int.TryParse(x as string, out a) && int.TryParse(y as string, out b)) { return a.CompareTo(b); } } return 0; } }
Private Sub SortByCodeCustomCompare() Me.gcMultiRow1.Sort(0, SortOrder.Ascending, New StringNumberCompare()) End Sub Private Class StringNumberCompare Implements System.Collections.IComparer Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare If TypeOf x Is String AndAlso TypeOf y Is String Then Dim a As Integer Dim b As Integer If Integer.TryParse(TryCast(x, String), a) AndAlso Integer.TryParse(TryCast(y, String), b) Then Return a.CompareTo(b) End If End If Return 0 End Function End Class