C# Devexpress:将选定的行投射到自定义对象

C# Devexpress: Cast selected row to custom object

在我的网格中,我有一个来自 SQL 数据库(带有 SELECT * FROM 语句)的行列表。

我想要做的是让用户关注一行 -> 单击一个按钮并打开一个表单并传递该行(在整个对象中)。

我尝试执行以下操作:

private void btn_Get_Object_Details_Click(object sender, EventArgs e)
{
     Person p = gridView.GetFocusedRow() as Person;
     MessageBox.Show("name: " + person.Name);
}

然而,我得到了 gridView.GetFocusedRow() 的空引用异常,即使我选择了一行。

我的错误在哪里?

根据文档,GetFocusedRow 方法的 return 值取决于网格数据源的类型。如果数据源是 System.Data.DataTableSystem.Data.DataView,此方法 return 是一个 System.Data.DataRowView 表示焦点行的对象。如果数据源是项目的自定义列表,则相应的列表项是 returned.

据我所知,您正在使用 DataTable 作为网格的数据源。如果是这样,您应该将 DataTable 更改为 one of the multiple object's data sources for DevExpress Grid 或使用 DataRow 作为表单互操作中的数据传输单元。