InvalidCastException从DataBoundItem获取值

时间:2013-03-06 12:06:34

标签: c# datagridview

我正在尝试使用源查询列名称获取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'.

1 个答案:

答案 0 :(得分:2)

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

        var obj = dataGridView1.CurrentRow.DataBoundItem;

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

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