【问题标题】:Unable to cast object of type 'System.Data.DataRowView' to type 'System.IConvertible'无法将“System.Data.DataRowView”类型的对象转换为“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'

我该如何解决?

请帮忙

【问题讨论】:

    标签: c# .net windows-applications


    【解决方案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";
        
        
        
        }   
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-12-17
          • 1970-01-01
          • 1970-01-01
          • 2020-12-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多