2009-05-20 9 views
2

グリッドに表示されているのと同じ順序で、infragistics ultragridの列にアクセスする必要があります。グリッド上に表示されているのと同じ順序で列のインデックスを取得できる場合、私は問題を修正することができます。 ありがとうございます。グリッド列が表示されているのと同じ順序でアクセスする

ラリット

+0

[tag:asp.net]タグは本当にタグ付けが必要かどうか疑問に思います[tag:UltraWebGrid] ... –

答えて

0

私はあなたが順序が変更されたときに発生するイベントを処理し、すべての変更を追跡するために試みることができると仮定し、それが中クリープ微妙なバグを求めているように、これはそうです。

私はすべての列をループし、現在の位置(多分TabOrder?)を教えて、それを使って列のインオーダーリストをコンパイルするためのプロパティを使用しようと考えました。私はあなたがColumn.GetRelatedVisibleColumn()メソッドを使用して各列をループする必要がありますね。

他の優先度の高い問題があるため、実際にはまだ実装されていませんが、それが終了する道のりかもしれません。

2
UltraGridColumn column = this.ultraGrid1.DisplayLayout.Bands[0].Columns[0]; 

Debug.WriteLine("Columns in visible order: "); 

     // Get the first visible column by passing in VisibleRelation.First. 
     column = column.GetRelatedVisibleColumn(VisibleRelation.First); 

     while (null != column) 
     { 
      Debug.WriteLine(" " + column.Key); 

      // Get the next visible column by passing in VisibleRelation.Next. 
      column = column.GetRelatedVisibleColumn(VisibleRelation.Next); 
     } 

http://help.infragistics.com/Help/NetAdvantage/NET/2008.2/CLR2.0/html/Infragistics2.Win.UltraWinGrid.v8.2~Infragistics.Win.UltraWinGrid.UltraGridColumn~GetRelatedVisibleColumn.html

0

これは、古い質問ですが、私は最近、同じ問題を持っていたし、それをこのように解決:

var selectedCells = this.Selected.Cells; 

List<int> columns = new List<int>(); 

foreach (var cell in selectedCells) 
     { 
      if (!columns.Contains(cell.Column.Index)) 
       columns.Add(cell.Column.Index); 
     } 

columns.Sort((x, y) => this.DisplayLayout.Rows.Band.Columns[x].Header.VisiblePosition.CompareTo(this.DisplayLayout.Rows.Band.Columns[y].Header.VisiblePosition)); 

それらが示されている順序であなたが、その後の列にアクセスするためにcolumnsを使用することができます。

関連する問題