如何确定哪个DataRow绑定到DataGridViewRow

时间:2010-10-25 11:20:51

标签: c# .net vb.net data-binding datagridview

当我使用DataTable作为DataGridViewDataSource时,我经常需要找到用户选择的行,并从{{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

感谢。

1 个答案:

答案 0 :(得分:4)

DataGridViewRow.DataBoundItem将为Databound dataTable(dataview)中的当前项提供dataViewRow。

所以:

Dim drv as DataRowView = myDataGridViewRow.DataBoundItem

Dim dr as DataRow = drv.Row

将从datagridviewrow中为您提供DataRow。