如何从DataGridView的一行获取一个DataRow

34

我正在使用一个数据绑定的 Windows Forms DataGridView。如果用户选择了一行,那么如何从 DataGridView 转到它的源 DataTableDataRow

4个回答

57
DataRow row = ((DataRowView)DataGridViewRow.DataBoundItem).Row

假设您已绑定了普通的 DataTable

MyTypedDataRow row = (MyTypedDataRow)((DataRowView)DataGridViewRow.DataBoundItem).Row

假设你已经绑定了一个类型化的datatable。

更多信息请参见MSDN上的文章


谢谢。另一个相关的问题是,我如何输入我的行? - Dan Is Fiddling By Firelight
你需要阅读这个链接:http://msdn.microsoft.com/en-us/library/esbykkzb(VS.71).aspx。然而,如果你还没有这样做的话,我建议你忽略它们并转向LINQ to SQL:http://msdn.microsoft.com/en-us/library/bb425822.aspx。 - Neil Barnwell
3
好棒的解决方案!非常有效,我是这样使用的: ((dgvAttached.SelectedCells[0].OwningRow.DataBoundItem as DataRowView).Row as DataRow) - MiBol

9
DataTable table = grdMyGrid.DataSource as DataTable;
DataRow row = table.NewRow();
row = ((DataRowView)grdMyGrid.SelectedRows[0].DataBoundItem).Row;

2
DataGridViewRow中有一个名为DataBoundItem的属性,类型为对象。
这个属性将包含一个DataRowView(你可以检查一下确保它是这个类型)。

0
在Visual Studio 2017 .NET 4.5中,我成功地使用了。
 var row = (DataRowView) e.Row.DataItem;

这是ASP.Net,不是WinForms。 - Rhys Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接