Получить первый видимый столбец в 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

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

3 ответа

Решение

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

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

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

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

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

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

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

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

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

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
Другие вопросы по тегам