假设网格已经绑定(bind)到数据行并具有多个列。

我发现我可以通过以下方式检索给定的列位置索引:

var fieldsLayout = grid.FieldLayouts[0];
var columnField = fieldsLayout.Fields.Single(f => f.Name == "Column Name");
int columnIndex = ... see below
  • columnField.Index-如果用户未更改初始列,请订购
  • columnField.ActualPosition.Column-如果用户更改了初始列,则订购

  • 问题是如何知道用户是否更改了初始列顺序?

    最佳答案

    在进行调查时,我发现在初始阶段,当列顺序尚未更改时,每列的field.ActivePosition.Column0== 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,
    

    09-30 23:34