我正在尝试使用源查询列名称获取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'.
答案 0 :(得分:2)
我猜你的数据源是一个DataTable。在这种情况下,DataBoundItem的类型是DataRowView而不是DataRow。这基于DataGridView使用DataTable的默认视图这一事实。 如果您想访问DataRow,您需要:
var obj = dataGridView1.CurrentRow.DataBoundItem;
if (obj != null)
{
var item = ((DataRowView)obj).Row;
}
Ps:我总是避免在理论上可以为空的对象的显式演员。