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 回答