'宣言 Public Property CustomComparer As System.Collections.IComparer
public System.Collections.IComparer CustomComparer {get; set;}
'宣言 Public Property CustomComparer As System.Collections.IComparer
public System.Collections.IComparer CustomComparer {get; set;}
グリッドは、セルを比較し、それらの内容が同じかどうかを判定するために使用されるデフォルトの System.Collections.IComparerを実装しています。この実装は、値のマージ、グループ化、または検索時に使用されます( AllowMergingプロパティ、 Subtotal(AggregateEnum,Int32,Int32,Int32,Int32,String)メソッド、および FindRow(String,Int32,Int32,Boolean,Boolean,Boolean)メソッドを参照)。
デフォルトの実装は、大文字小文字を区別し、先行および後続の空白が考慮されます。
大文字小文字を区別しない比較または空白のトリミングを使用してセルをマージする場合は、 System.Collections.IComparerインタフェースを実装するカスタムクラスを記述し、そのインスタンスをグリッドの CustomComparer プロパティに割り当てます。
このプロパティを null (Visual Basic では Nothing)に設定すると、デフォルトの動作に戻ります。
flex.DataSource = GetTable() ' 大文字小文字を区別しない比較子を使用します。 flex.CustomComparer = New CaseInsensitiveComparer() ' 大文字小文字を無視してグループを追加します。 flex.Subtotal(AggregateEnum.Sum, 1, 1, 4) ' デフォルトの比較子(大文字小文字を区別する)を復元します。 flex.CustomComparer = Nothing Private Shared Function GetTable() As DataTable Dim table As DataTable = New DataTable table.Columns.Add("CustomerName", GetType(String)) table.Columns.Add("CustomerID", GetType(System.Int32)) table.Columns.Add("Frequency", GetType(System.Double)) table.Columns.Add("Age", GetType(System.Int32)) table.Rows.Add("Chris", 1, 0.3, 68) table.Rows.Add("chris", 2, 0.2, 10) table.Rows.Add("Paul", 3, 0.5, 41) table.Rows.Add("paul", 4, 0.4, 60) table.Rows.Add("PAUL", 5, 1, 10) Return table End Function
flex.DataSource = GetTable(); // 大文字小文字を区別しない比較子を使用します。 flex.CustomComparer = new System.Collections.CaseInsensitiveComparer(); // 大文字小文字を無視してグループを追加します。 flex.Subtotal(AggregateEnum.Sum, 1, 1, 4); // デフォルトの比較子(大文字小文字を区別する)を復元します。 flex.CustomComparer = null; private static DataTable GetTable() { DataTable table = new DataTable(); table.Columns.Add("CustomerName", typeof(String)); table.Columns.Add("CustomerID", typeof(int)); table.Columns.Add("Frequency", typeof(double)); table.Columns.Add("Age", typeof(int)); table.Rows.Add("Chris", 1, 0.3, 68); table.Rows.Add("chris", 2, 0.2, 10); table.Rows.Add("Paul", 3, 0.5, 41); table.Rows.Add("paul", 4, 0.4, 60); table.Rows.Add("PAUL", 5, 1, 10); return table; }