5

グリッドがすでにデータ行にバインドされており、複数の列があると想像してみましょう。

次の方法で、特定の列位置インデックスを取得できることがわかりました。

var fieldsLayout = grid.FieldLayouts[0];
var columnField = fieldsLayout.Fields.Single(f => f.Name == "Column Name");
int columnIndex = ... see below
  • columnField.Index-ユーザーが最初の列の順序を変更しなかった場合
  • columnField.ActualPosition.Column-ユーザーが最初の列の順序を変更した場合

問題は、ユーザーが最初の列の順序を変更したかどうかを知る方法です。

4

2 に答える 2

4

調査中に、列の順序がまだ変更されていない初期段階で、field.ActivePosition.Column各列が0or== field.Indexであることを発見したため、次のフラグを導入することにより:

bool initialOrderChanged = fieldsLayout.Fields.Any(f => 
                                       f.ActualPosition.Column != 0 
                                       && 
                                       f.ActualPosition.Column != f.Index);

次の方法で正しい列位置の順序を取得できます。

 int position = initialOrderChanged
                      ? field.ActualPosition.Column
                      : field.Index,
于 2011-10-21T09:15:58.153 に答える
1

初期列リストを保存し、初期列リストを実際のリストと比較します。順序に違いがある場合は、列の順序が変更されています。

于 2011-10-20T14:41:13.907 に答える