如何从 DataGridView 中的一行获取 DataRow

Posted

技术标签:

【中文标题】如何从 DataGridView 中的一行获取 DataRow【英文标题】:How do I get a DataRow from a row in a DataGridView 【发布时间】:2010-12-21 19:03:29 【问题描述】:

我正在使用数据绑定的 Windows 窗体 DataGridView。如何从DataGridView 中用户选择的行转到作为其来源的DataTableDataRow

【问题讨论】:

【参考方案1】:
DataRow row = ((DataRowView)DataGridViewRow.DataBoundItem).Row

假设你绑定了一个普通的DataTable

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

假设您已经绑定了一个类型化的数据表。

请参阅article on MSDN 了解更多信息。

【讨论】:

谢谢。关于一个相关问题;如何键入我的行? 您需要阅读此内容:msdn.microsoft.com/en-us/library/esbykkzb(VS.71).aspx。但是,如果您还没有这样做,我建议您忽略它们并转向 LINQ to SQL:msdn.microsoft.com/en-us/library/bb425822.aspx 可爱的解决方案!像魅力一样工作,我以这种方式使用: ((dgvAttached.SelectedCells[0].OwningRow.DataBoundItem as DataRowView).Row as DataRow)【参考方案2】:
DataTable table = grdMyGrid.DataSource as DataTable;
DataRow row = table.NewRow();
row = ((DataRowView)grdMyGrid.SelectedRows[0].DataBoundItem).Row;

【讨论】:

【参考方案3】:

DataGridViewRow 中有一个名为DataBoundItem 的对象类型的属性。

这将包含一个DataRowView(您可以检查一下)

【讨论】:

【参考方案4】:

在 Visual Studio 2017 .NET 4.5 中,我取得了成功

 var row = (DataRowView) e.Row.DataItem;

【讨论】:

这是 ASP.Net,不是 WinForms。

以上是关于如何从 DataGridView 中的一行获取 DataRow的主要内容,如果未能解决你的问题,请参考以下文章

winform如何从DataGridView中从右键菜单获取一行数据

如果相同的 DateTime 已经在一行中,如何覆盖 dataGridView 中的一行?

从 DataGridView 列中获取值,最后为空行 c#

如何在C#中 双击datagridview1中的一行数据,添加到新的datagridview2中。 B/C VS2010

C#如何获取datagridview最后一行第一列数据的值

如何从DataGridView中的行获取DataRow