0

我正在尝试使用源查询列名获取 DataGridView 行中单元格的值。DataGridView 是从 BindingSource 填充的(因为它的 DataSource 属性设置为 BindingSource。)

var obj = dataGridView1.CurrentRow.DataBoundItem;

var item = (DataRow)obj;

在第二行我得到一个 InvalidCastException:

Unable to cast object of type 'System.Data.DataRowView' to type 'System.Data.DataRow'.
4

1 回答 1

2

我猜你的数据源是一个数据表。在这种情况下,DataBoundItem 的类型是 DataRowView 而不是 DataRow。这是基于 DataGridView 使用 DataTable 的默认视图这一事实。如果你想访问 DataRow 你需要这个:

        var obj = dataGridView1.CurrentRow.DataBoundItem;

        if (obj != null)
        {
            var item = ((DataRowView)obj).Row;
        }

Ps:我总是避免显式转换理论上可以为空的对象。

于 2013-03-06T12:53:19.273 回答