2013-05-17 4 views
1

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

// Код

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 

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

+0

Я действительно не понимаю, чего вы хотите. Вы просто хотите получить первый столбец вашей сетки? –

+0

Да. Поскольку у меня есть некоторые из столбцов, которые явно привязаны, если я скрываю первый столбец, тогда код должен показывать второй столбец, как первый, который теперь видим в сетке в качестве первого столбца. я чист? – iamCR

ответ

0

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

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 
0

EDIT: Этот код предоставит вам первую видимую колонку.

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 
+0

Извините, это не работает. Мой первый столбец в сетке скрыт, а второй столбец показан в качестве первого столбца. Теперь код должен показывать второй столбец как первый, так как это видно прямо сейчас. – iamCR

+0

Чтобы быть более конкретным и прямым, мне нужна первая видимая колонка сетки. – iamCR

+0

Хорошо, никаких проблем. Работает ли отредактированная версия для вас? –

1

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

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

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

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

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

Если заголовок является ColumnHeader, то он выставит столбец как свойство.

Смежные вопросы