定时器刷新后保持超网格选择

时间:2012-12-21 11:23:27

标签: vb.net infragistics

我的vb.net程序中有一个ultragrid和一个计时器。每次我的计时器滴答时,它会重置我点击的任何选定的行。所以我想在每个tick上保存行的索引并在tick之后重新加载它。问题是我的网格中也有组。所以我可能有两组,每组我可能有3行,另外5行。所以我需要知道如何选择组中的组和行以保存它并在勾选后重新加载它。我知道我选择了带有ultragrid.activeRow等的行。

这是我的小组

Dim dt As DataTable = Nothing

Timer1.Enabled = True
UltraGrid1.DataSource = Nothing
Generic.openOrders(dt)
UltraGrid1.DataSource = dt
Dim band As Infragistics.Win.UltraWinGrid.UltraGridBand = UltraGrid1.DisplayLayout.Bands(0)
UltraGrid1.DisplayLayout.ViewStyleBand = Infragistics.Win.UltraWinGrid.ViewStyleBand.OutlookGroupBy

band.SortedColumns.Add(band.Columns("ORDERDATE"), False, True)
band.SortedColumns.Add(band.Columns("ORDERTIME"), False, True)
band.Columns("USERNAME").CellClickAction = CellClickAction.RowSelect
band.Columns("QUANTITY").CellClickAction = CellClickAction.RowSelect
band.Columns("ORDERLIST").CellClickAction = CellClickAction.RowSelect
band.Columns("LOCATION").CellClickAction = CellClickAction.RowSelect

band.Columns("PAID").Hidden = True
band.Columns("PROCESSING").Hidden = True
band.Columns("COMPLETED").Hidden = True
band.Columns("ITEMTIME").Hidden = True
band.Columns("ITEMPRICE").Hidden = True
band.Columns("ORDERPRICE").Hidden = True
band.Columns("READYORDER").Hidden = True
UltraGrid1.DisplayLayout.Override.AllowColSizing = Infragistics.Win.UltraWinGrid.ColumnAutoSizeMode.VisibleRows
UltraGrid1.Rows.ExpandAll(True)

我的输出是这样的:

 ORDERDATE:
      ORDERTIME:
      ORDER1 ITEM1
      ORDER1 ITEM2
      ORDER1 ITEM3

      ORDERTIME:
      ORDER2 ITEM1
      ORDER2 ITEM2
 ORDERDATE:
      ORDERTIME:
      ORDER3 ITEM1
      ORDER3 ITEM2
      ORDER3 ITEM3
      ORDER3 ITEM4

我设法使用此代码获取ORDERDATE,ORDERTIME和ORDER的索引:

 If UltraGrid1.Selected.Rows.Count > 0 Then
            Dim rowSelected As UltraGridRow
            For Each rowSelected In UltraGrid1.Selected.Rows
                rowIndex = rowSelected.Index
                itemTimeIndex = rowSelected.ParentCollection.ParentRow.Index
                orderTimeIndex = rowSelected.ParentCollection.ParentRow.ParentCollection.ParentRow.Index

            Next
        End If

现在我如何将它们设置回新的超网格?

1 个答案:

答案 0 :(得分:0)

假设Grid用于进行分组并且网格绑定的数据是平的,您可以使用ultraGrid1.Rows.GetRowWithListIndex传入源列表中的行的索引来获取您的行需要激活。

只要您的行具有ID,您就可以存储该ID并在新列表中找到相同的行,然后使用GetRowWithListIndex方法获取网格中的新行。对于相关的GroupByRow,可以使用UltraGridRow公开的ParentRow属性。