我有一个System.Windows.Forms.DataGridView
展示我的类型的对象IECInstance
。
我正在构建一个DataTable
并用我的对象填充表,并将 DataTable 设置为我的 DataGridView 的 DataSource。所以我的 DataGridView 正确显示了我的对象。
我现在的问题是在我选择行时获取对象。
我的第一次尝试是使用这个:
IECInstance theObjectIWant = dataGridView.SelectedRows[0].DataBoundItem as IECInstance.
但DataBountItem
返回一个DataRowView
. 所以我在 SO 上发现了很多关于这个问题的问题,有些人建议使用这个:
var drv = dataGridView1.SelectedRows[0].DataBoundItem as DataRowView;
var row = drv.Row as DataRow;
var val = row[X] as MyType;
但据我所知, row[X] 是对单元格(列)的访问,因此它与我的问题不匹配。
当我使用List<IECInstances>
作为 DataSource 而不是 DataTable 时,属性 DataBoundItem 返回正确的对象。但实际上我不想将数据源设置为列表。
为了确保:当我谈论对象时,我的意思是我的 IECInstace 类型的业务对象。