当我使用DataTable
作为DataGridView
的DataSource
时,我经常需要找到用户选择的行,并从{{3}中读取特定值(不是DataGridView)
我想知道是否有任何可靠的方法来确定哪个DataTable DataRow
被绑定,尤其是当用户在默认顺序以外的列上对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
感谢。
答案 0 :(得分:4)
DataGridViewRow.DataBoundItem将为Databound dataTable(dataview)中的当前项提供dataViewRow。
所以:
Dim drv as DataRowView = myDataGridViewRow.DataBoundItem
Dim dr as DataRow = drv.Row
将从datagridviewrow中为您提供DataRow。