InvalidCastException从DataBoundItem获取值
本文关键字:获取 DataBoundItem InvalidCastException | 更新日期: 2023-09-27 18:02:26
我试图使用源查询列名在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'.
我猜你的数据源是一个数据表。在这种情况下,DataBoundItem的类型是DataRowView而不是DataRow。这是基于DataGridView使用DataTable的默认视图这一事实。如果你想访问DataRow,你需要这样做:
var obj = dataGridView1.CurrentRow.DataBoundItem;
if (obj != null)
{
var item = ((DataRowView)obj).Row;
}
Ps:我总是避免对理论上可以为null的对象进行显式强制转换。