このトピックは、並べ替えやグループ化処理で xamDataGrid™ コントロール __ の内部比較演算子で実行されるアクションについて説明します。
このトピックを理解するためには、以下のトピックを理解しておく必要があります。
デフォルトで、最適化された内部比較演算子はすべての xamDataGrid DataRecord を並べ替えます。このトピックの残りでは、13.1 で追加されたコントロールの最適化についての情報とプロセスの詳細を提供します。
注:
内部比較は以下を実行します。
個別フィールド比較演算子を作成し、コンストラクター内の他の関係する情報をキャッシュします。フィールド比較演算子は、以下の順序で配列内に並べられます。
まず、IGroupByEvaluator
SortComparer オブジェクトを使用して SortedFields コレクションのグループ フィールドすべて。いずれかが Null
の場合、フィールドは SortComparer
またはデフォルト比較演算子を使用します。
次に、フィールドの SortComparer
またはデフォルト比較演算子のどちらかを使用した SortedFields
コレクションのグループ フィールド以外すべて。
最後に、最後に再び追加されているコレクションに 1 度のみ表示される (手順 b では追加されません) SortedFields
コレクションのグループ化フィールド。今回は、IGroupByEvaluator.SortComparer
を無視し、代わりにフィールドの SortComparer
またはデフォルト比較演算子を使用します。
手順 b または手順 c のフィールド演算子のいずれかが必要ない場合 (IGroupByEvaluator.SortComparer
が Null
を返します)、これらの比較演算子は 2 度目は配列に追加されません。代わりに、コントロールは他の配列を除外して最適化し、並べ替え時の必要ないオーバーヘッドを防止します。
Compare メソッドで、実装は最初に実行するフィールド比較演算子として高次フィールド比較演算子 (配列インデックス 0 ) を選択します。
フィールド比較演算子の Compare メソッドを呼び出して 0 以外を返した場合、終了してその値を返します。
そうでない場合、フィールド比較演算子は 2 つの DataRecord
が等しいことを示す 0 を返します。配列インデックスを増加し、手順 3 と 4 を繰り返して次のフィールド比較演算子を確認します。
配列のフィールド比較演算子のすべてが 0 を返した場合、すべてが等しいことを意味します。コントロールは、最後の比較にデータソースの関連するデータ項目の関連性のあるインデックスを使用します。更に、データ項目インデックスをキャッシュして、比較処理時にデータ項目インデックスをクエリするためにデータソースで IndexOf
操作が繰り返し実行されるのを防止します。
並べ替え後にグループ化されたフィールドを含む適切な GroupByRecord を作成します。可能な場合、最適化されたロジックは、既存の GroupByRecord
を再利用しようとします。
最後に、2 度目の並べ替えパスの一部として関連する GroupByRecord
を使用してグループ フィールドに GroupByComparer を指定します。
このトピックにの追加情報については、以下のトピックも合わせてご参照ください。