当我将DataTable用作DataGridViewDataSource时,我经常不得不查找用户选择的行,并从DataTable中读取特定值(而不是DataGridView)

我想知道是否有任何可靠的方法来确定DataRow绑定到哪个DataGridViewRow,尤其是当用户在默认顺序以外的其他列上对DataGridView进行排序时。

当前,我使用这种代码:

Dim sorting = ""

If DataGrid.SortOrder <> SortOrder.None Then
    'get the actual row if the results are sorted'
    sorting = "[" & DataGrid.SortedColumn.Name & "]" &
              If(DataGrid.SortOrder = SortOrder.Ascending, "", " DESC")
End If

'return the selected row after sorting'
Dim selectedRowIndices = (From r In DataGrid.SelectedRows Select
                          DirectCast(r, DataGridViewRow).Index).ToArray
SelectedDataRow = (DataTable.Select("", sorting).Where(
                   Function(r As DataRow, i As Integer) i = selectedRowIndex)
                  ).FirstOrDefault


谢谢。

最佳答案

DataGridViewRow.DataBoundItem将为您提供Databound dataTable(数据视图)中当前项目的dataViewRow。

所以:

Dim drv as DataRowView = myDataGridViewRow.DataBoundItem

Dim dr as DataRow = drv.Row


将从您的datagridviewrow中给您DataRow。

10-08 02:16