【问题标题】:InvalidCastException getting value from DataBoundItemInvalidCastException 从 DataBoundItem 获取值
【发布时间】:2013-03-06 12:06:34
【问题描述】:

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

【问题讨论】:

  • 您使用哪个事件来触发上述代码?
  • 菜单项点击。我想选择行然后选择一个菜单项并使用行数据做一些事情。
  • 看看这是否有帮助:stackoverflow.com/questions/3035144/…
  • 不,我可以得到该行 - 那只是 dataGridView1.CurrentRow

标签: c# datagridview


【解决方案1】:

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

        var obj = dataGridView1.CurrentRow.DataBoundItem;

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 2023-04-10
    • 2011-10-15
    • 2021-12-05
    • 2012-02-26
    • 2020-05-26
    • 2017-03-31
    相关资源
    最近更新 更多