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

时间:2018-05-08 09:58:43

标签: c# gridview casting devexpress

在我的网格中,我有一个来自SQL DB的行列表(带有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()的空引用异常。

我的错误在哪里?

1 个答案:

答案 0 :(得分:3)

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

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