无法将类型为'system.Data.DataRowView'的对象强制转换为'System.IConvertible' [英] Unable to cast object of type 'system.Data.DataRowView' to type 'System.IConvertible'

查看:108
本文介绍了无法将类型为'system.Data.DataRowView'的对象强制转换为'System.IConvertible'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Win Form上我有两个组合框;一个组合框依赖于另一个组合框。

i有这些代码

  private   void  Form2_Load( object  sender,EventArgs e)
{
DataTable dataTable = objProdCat.SelectAll();
ddlCategory.DataSource = dataTable;
ddlCategory.DisplayMember = ProductCatName;
ddlCategory.ValueMember = ProductCatId;
}
// 下面的另一个cb代码
private void ddlCategory_SelectedIndexChanged( object sender,EventArgs e)
{
尝试
{
if (ddlCategory。 SelectedValue!= null
{
objProdSubCat.ProductCatId = Convert.ToInt32(ddlCategory.SelectedValue);
BindSubCat();
}
}
catch (例外情况)
{
MessageBox.Show(ex.Message) ;
}
}



但问题是它向我展示了这个例外..

如何解决?

无法将'system.Data.DataRowView'类型的对象强制转换为'System.IConvertible'

解决方案

首先提到valuemeber和displaymember绑定数据如下代码



 private void Form2_Load(object sender,EventArgs e)
{
ddlCategory.DisplayMember =ProductCatName;
ddlCategory.ValueMember =ProductCatId;
DataTable dataTable = objProdCat.SelectAll();
ddlCategory.DataSource = dataTable;
}


错误位于以下行

 objProdSubCat.ProductCatId = Convert.ToInt32( ddlCategory.SelectedValue); 



将其更改为

 objProdSubCat.ProductCatId = Convert.ToInt32(((DataRowView)ddlCategory .SelectedValue)[ProductCatId]); 



参考无法将'System.Data.DataRowView'类型的对象强制转换为'System.IConvertible' [ ^ ]


On a Win Form I have two combo boxes; one combobox is dependent upon another.
i have these code

private void Form2_Load(object sender, EventArgs e)
        {
DataTable dataTable = objProdCat.SelectAll();
ddlCategory.DataSource = dataTable;
ddlCategory.DisplayMember = "ProductCatName";
ddlCategory.ValueMember = "ProductCatId";
        }
//another cb code below
private void ddlCategory_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (ddlCategory.SelectedValue != null)
                {
                    objProdSubCat.ProductCatId = Convert.ToInt32(ddlCategory.SelectedValue);
                    BindSubCat();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }


but the problem is it showing me this exception..
how to solve it??
Unable to cast object of type 'system.Data.DataRowView' to type 'System.IConvertible'

解决方案

first mention valuemeber and displaymember the bind datasoure as below code

private void Form2_Load(object sender, EventArgs e)
        {
ddlCategory.DisplayMember = "ProductCatName";
ddlCategory.ValueMember = "ProductCatId";
DataTable dataTable = objProdCat.SelectAll();
ddlCategory.DataSource = dataTable;
        }


Error is on below line

objProdSubCat.ProductCatId = Convert.ToInt32(ddlCategory.SelectedValue);


change it to

objProdSubCat.ProductCatId = Convert.ToInt32(((DataRowView)ddlCategory.SelectedValue)["ProductCatId"]);


refer Unable to cast object of type 'System.Data.DataRowView' to type 'System.IConvertible'[^]


这篇关于无法将类型为'system.Data.DataRowView'的对象强制转换为'System.IConvertible'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆