Получить первый видимый столбец в Ultragrid

У меня есть несколько столбцов в моем ultragrid с пользовательскими операциями visible и invisible. Теперь мне нужно проверить, является ли столбец первым column в сетке. так как у меня есть некоторый columns, который явно привязан с помощью index, я не могу получить столбец. Всегда показывает тот же column, что и Первый.

//Код

For Each UltraGridColumn In Me.TransactionsGrid.Rows.Band.Columns

   'Get the first cell column in the grid
   UltraGridCell = UltraGridRow.Cells(UltraGridColumn)

   If ('Check Here') Then

      'Set the cell image
      UltraGridCell.Appearance.Image = My.Resources.Tran_comment_161
      UltraGridCell.Appearance.ImageHAlign = HAlign.Right
      UltraGridCell.Appearance.ImageVAlign = VAlign.Top

   Else
      UltraGridCell.Appearance.ResetImage()
   End If
Next

Как этого добиться?


person A Coder    schedule 17.05.2013    source источник
comment
Я действительно не понимаю, чего ты хочешь. Вы просто хотите получить первый столбец вашей сетки?   -  person Fabian Bigler    schedule 17.05.2013
comment
да. Поскольку у меня есть некоторые столбцы, которые связаны явно, если я скрываю первый столбец, тогда код должен отображать второй столбец как первый, который теперь виден в сетке как первый столбец. я чистый?   -  person A Coder    schedule 17.05.2013


Ответы (3)


Я добавляю альтернативный ответ, поскольку он ответил на вопрос, заданный в заголовке, и может быть тем, что ищут люди, если они столкнутся с этим вопросом.

WinGrid будет иметь один или несколько ColScrollRegion, которые дают прокручиваемую область заголовков, а вне ColScrollRegion находится VisibleHeaders, которое предоставляет видимые заголовки для области прокрутки.

Обратите внимание, что это обеспечит первый видимый столбец, даже если сетка прокручивается вправо и может не быть первым столбцом в сетке. Когда положение прокрутки области прокрутки находится полностью влево, первый заголовок в VisibleHeadersCollection вернет первый столбец в сетке.

Доступ к ColScrollRegions осуществляется через свойство ColScrollRegions в DisplayLayout, и вы можете получить доступ к первому видимому заголовку с помощью:

Me.ultraGrid1.DisplayLayout.ColScrollRegions(0).VisibleHeaders(0).Header

Если заголовок является ColumnHeader, то он будет отображать столбец как свойство.

person alhalama    schedule 23.05.2013

РЕДАКТИРОВАТЬ: Этот код даст вам первый видимый столбец.

Dim firstCol As UltraGridColumn = Nothing
        For Each col As UltraGridColumn In TransactionsGrid.DisplayLayout.Bands(0).Columns
            If Not col.Hidden Then
                firstCol = col
                Exit For
            End If
        Next
        If firstCol IsNot Nothing Then
            'Your code here
        End If
person Fabian Bigler    schedule 17.05.2013
comment
Извините, это не работает. Мой первый столбец в сетке скрыт, а второй столбец отображается как первый столбец. Теперь код должен отображать второй столбец как первый, поскольку он виден прямо сейчас. - person A Coder; 17.05.2013
comment
Чтобы быть более конкретным и прямым, мне нужен первый видимый столбец сетки. - person A Coder; 17.05.2013

С флагом для проверки того, какой столбец выбран, этот код работает нормально.

For Each UltraGridColumn In Me.TransactionsGrid.Rows.Band.Columns

       'Get the first cell column in the grid
       UltraGridCell = UltraGridRow.Cells(UltraGridColumn)

       If ('Check Here') Then

          'Set the cell image
          UltraGridCell.Appearance.Image = My.Resources.Tran_comment_161
          UltraGridCell.Appearance.ImageHAlign = HAlign.Right
          UltraGridCell.Appearance.ImageVAlign = VAlign.Top

       Else
          UltraGridCell.Appearance.ResetImage()
       End If
    Next 

 If (blnFlag) Then
                    Dim i = 0
                    For Each UltraGridColumn In Me.TransactionsGrid.Rows.Band.Columns

                        'Get the first cell of the column in the grid
                        UltraGridCell = UltraGridRow.Cells(UltraGridColumn)

                        If (UltraGridColumn.Hidden = False And i = 0) Then

                            'Set the cell image
                            UltraGridCell.Appearance.Image = My.Resources.Tran_comment_161
                            UltraGridCell.Appearance.ImageHAlign = HAlign.Right
                            UltraGridCell.Appearance.ImageVAlign = VAlign.Top
                            i += 1
                        Else
                            'Reset the image if other column
                            UltraGridCell.Appearance.ResetImage()
                        End If

                    Next
  End If
person A Coder    schedule 23.05.2013