2009-05-20 10 views
2

Ich muss auf Spalten von Infragistics Ultragrid in der gleichen Reihenfolge zugreifen, in der sie im Raster angezeigt werden. Wenn ich den Index der Spalte in der gleichen Reihenfolge wie im Raster erhalten kann, kann ich meine Probleme beheben. Vielen Dank im Voraus.Zugriff auf Rasterspalten in der gleichen Reihenfolge, in der sie sichtbar sind

Lalit

+0

So fragt mich das Tag [tag: asp.net], ob das wirklich getaggt werden sollte [tag: UltraWebGrid] ... –

Antwort

0

Ich nehme an, Sie könnten versuchen, das Ereignis zu behandeln, die ausgelöst wird, wenn die Reihenfolge geändert wird, und behalten den Überblick über alle Änderungen, aber dies scheint, wie es für geringfügige Fehler bittet zu kriechen.

Ich überlegte, alle Spalten durchzulaufen und zu versuchen, eine Eigenschaft zu verwenden, die mir ihre aktuelle Position (vielleicht die TabOrder?) Sagen würde und damit eine Inorder-Liste der Spalten zu kompilieren. Ich denke, Sie müssen möglicherweise jede Spalte mit der Column.GetRelatedVisibleColumn() -Methode durchlaufen.

Ich habe es noch nicht implementiert, da ich andere Probleme mit höherer Priorität habe, aber das könnte der Weg sein, den ich am Ende habe.

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

Dies ist eine alte Frage, aber ich hatte vor kurzem gleiche Problem und löste es auf diese Weise:

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)); 

Sie dann columns verwenden können Spalten, um den Zugriff auf sie gezeigt werden .