无法将“System.Data.DataRowView”类型的对象转换为“System.IConvertible”类型

Posted

技术标签:

【中文标题】无法将“System.Data.DataRowView”类型的对象转换为“System.IConvertible”类型【英文标题】:Unable to cast object of type 'System.Data.DataRowView' to type 'System.IConvertible' 【发布时间】:2012-03-14 19:23:37 【问题描述】:

我在 C# 代码中使用

int i = Convert.ToInt32(ddlDivisionId.SelectedValue);

当时产生了这种类型的错误..

Unable to cast object of type 'System.Data.DataRowView' to type 'System.IConvertible'

我该如何解决?

请帮忙

【问题讨论】:

【参考方案1】:

您的ddlDivisionId.SelectedValue 似乎返回了DataRowView。我假设您将 DataTable 或类似内容绑定到您的下拉列表(假设这是我们正在查看的内容)。

在这种情况下,您需要将 ddlDivisionId.SelectedValue 视为 DataRowView(可能首先转换为该对象)以从中获取价值...我假设如下:

int i = Convert.ToInt32(((DataRowView)ddlDivisionId.SelectedValue)["id"]);

在这里,您应该将“id”替换为您想要作为整数输出的数据表中的字段名称。

【讨论】:

我正在使用 DataTable 填充网格。在这种情况下,我想 (ddlDivisionId.SelectedValue) 更改 selectedIndex 上的这个下拉值。 我的下拉字段名称是 'DivisionId'in database..所以这里我放的是什么而不是 ["id"] ? int i = Convert.ToInt32(((DataRowView)ddlDivisionId.SelectedValue)["id"]);使用后我得到错误:id既不是DataColumn也不是表Table的DataRelation。 第二个答案显示在我的收件箱中,但我无法打开第二个答案..所以请再次发布 我已经更新了关于“id”的注释。基本上这是您尝试访问的表中的字段名称。【参考方案2】:
int i = Convert.ToInt32(ddlDivisionId.SelectedValue.ToString());

最后添加 .ToString 就可以了

【讨论】:

【参考方案3】:

如果你填写组合框, 将第一行移到最后一行: 之前

cbo.DataSource = dt; // this line
cbo.DisplayMember = "name";
cbo.ValueMember = "id";

之后

cbo.DisplayMember = "name";
cbo.ValueMember = "id";
cbo.DataSource = dt;

【讨论】:

【参考方案4】:

试试这个代码,我遇到了同样的问题,我用这个代码解决了它

public Items_form()

  InitializeComponent();
  comboBoxItemSizeCat.DataSource = SCC.AllSizeCategories();
  comboBoxItemSizeCat.DisplayMember = "Size Category";
  comboBoxItemSizeCat.ValueMember = "num";

private void comboBoxItemSizeCat_SelectedIndexChanged(object sender, EventArgs e)

 int i;
 Int32.TryParse(comboBoxItemSizeCat.SelectedValue.ToString(),out i);
 
 comboBoxItemSize.DataSource = SC.AllSize_accordingto_size_cat(i); 
 comboBoxItemSize.DisplayMember = "Size Name";
 comboBoxItemSize.ValueMember = "Size Code";



   

【讨论】:

以上是关于无法将“System.Data.DataRowView”类型的对象转换为“System.IConvertible”类型的主要内容,如果未能解决你的问题,请参考以下文章

无法将 createdAt 和 updatedAt 保存为日期时间值,也无法将后端保存为前端

C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable

无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS

无法将 .json 文件从 CSV 下载到 JSON 转换并且无法将 JSON 转换为 CSV

无法将 ReactiveUI 添加到 NUnit 测试项目

“无法将图像数据写入路径” - Laravel 图像干预