我已搜索过,似乎无法找到如何为多行执行此操作。
我有一个Datagrid,其items源是Datatable。用户可以选择多行,在数据网格外执行一些操作,然后单击按钮来更新数据。当发生这种情况时,我希望再次选择数据网格的选定行(在按钮单击之前)。这是我似乎无法弄清楚的部分。
我以为我可以通过存储当前选定的行索引来实现这一点。我发现可以通过选定的单元格访问它们,所以我尝试了这个:
Dim rows As List(Of Integer) = New List(Of Integer)
For Each cell As DataGridCellInfo In mydatagrid.SelectedCells
rows.Add(mydatagrid.Items.IndexOf(cell.Item))
Next
(...code to retrieve data...)
For Each item As Integer In rows
mydatagrid.SelectedIndex = item
Next
但SelectedIndex只有一个值,并且只选择了之前选择的最后一行。
我搜索了一些,并尝试自己存储所选项目,但这不起作用,没有选择任何内容:
Dim rows As List(Of Object) = New List(Of Object)
rows.AddRange(mydatagrid.SelectedItems)
(...code to retrieve data...)
For Each item As Object In rows
mydatagrid.SelectedItems.Add(item)
Next
我想我错过了一些事情:(感谢您的帮助。
答案 0 :(得分:3)
你几乎得到了它。您存储了选定的行索引,但DataGrid
希望您自己选择项目:
mydatagrid.SelectedItems.Clear()
For Each item As Integer In rows
If (item < mydatagrid.Items.Count) Then
mydatagrid.SelectedItems.Add(mydatagrid.Items.GetItemAt(item))
End If
Next
同样,如果要恢复单元格选择,则应存储DataGridCellInfos
,然后使用SelectedCells
集合。