获取Ultragrid中的第一个可见列

时间:2013-05-17 09:38:25

标签: .net vb.net infragistics ultragrid

我的ultragrid中包含多个列,其中包含用户定义的visibleinvisible操作。现在我必须检查列是否是网格中的第一个column。因为我有一些columnsindex的帮助下明确绑定了我无法得到该列。始终显示与第一个相同的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 个答案:

答案 0 :(得分:1)

我正在添加一个替代答案,因为它回答了标题提出的问题,如果遇到这个问题,可能就是人们正在寻找的内容。

WinGrid将有一个或多个ColScrollRegions,它们提供一个可滚动的标题区域,而在ColScrollRegion之外有一个VisibleHeaders属性,它公开了滚动区域的可见标题。

请注意,即使网格向右滚动也可能不是网格中的第一列,这将提供第一个可见列。当滚动区域的滚动位置一直向左时,VisibleHeadersCollection中的第一个标题将返回网格中的第一列。

ColScrollRegions由DisplayLayout上的ColScrollRegions属性访问,您可以通过以下方式访问第一个可见标头:

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

如果标题是ColumnHeader,那么它会将Column公开为属性。

答案 1 :(得分:0)

修改 此代码将为您提供第一个可见的列。

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

答案 2 :(得分: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