Skip to content

Replies

0
Erik Pratchenko
Erik Pratchenko answered on Jun 4, 2013 2:13 AM

The WinGridColumnPositioner Class in VB for anyone still stuck in the ice age such as myself.

Private Class WinGridColumnPositioner

Private band As UltraGridBand
Private columnPositions As Dictionary(Of Integer, UltraGridColumn) = New Dictionary(Of Integer, UltraGridColumn)

Public Sub AddColumnPosition(column As UltraGridColumn, visiblePosition As Integer)

If Me.band Is Nothing Then
Me.band = column.Band
End If

If column.Band IsNot Me.band Then
Throw New ArgumentException("All columns added to the positioner must be from the same band")
End If

If Me.columnPositions.Values.Contains(column) Then
Throw New ArgumentException("Cannot add the same column to the list twice")
End If

Me.columnPositions.Add(visiblePosition, column)
End Sub

Public Sub Position()
Dim columnCount As Integer = Me.columnPositions.Count
If columnCount = 0 Then
Throw New InvalidOperationException("There are no columns to position")
End If

Dim proccessed As Integer = 0
Dim visiblePosition As Integer = 0

While (proccessed < columnCount)
Dim column As UltraGridColumn
Dim success As Boolean = Me.columnPositions.TryGetValue(visiblePosition, column)
If success Then
column.Header.VisiblePosition = visiblePosition
proccessed += 1
End If
visiblePosition += 1
End While
End Sub
End Class

Private Sub ArrangeMyUltraGridColumns()
Dim columns As ColumnsCollection = Me.myUltraGrid.DisplayLayout.Bands(0).Columns
Dim winGridColumnPositioner As WinGridColumnPositioner = New WinGridColumnPositioner()
winGridColumnPositioner.AddColumnPosition(columns("A"), 0)
winGridColumnPositioner.AddColumnPosition(columns("B"), 1)
winGridColumnPositioner.AddColumnPosition(columns("C"), 2)
winGridColumnPositioner.Position()
End Sub