当我将DataTable
用作DataGridView
的DataSource
时,我经常不得不查找用户选择的行,并从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。