Combox选中的值显示system.Data行无法转换错误 [英] Combox selected value is showing system.Data row cannot convert error

查看:89
本文介绍了Combox选中的值显示system.Data行无法转换错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将Combobox1显示成员中的所有用户名作为用户名,ID作为值成员获取。



现在我启用了一个具有文本框,3个组合框和更新按钮的组合框我在Combobox1中选择一个项目。考虑combobox1的值成员获取特定用户并尝试在组框中显示这些详细信息(文本框包含用户名,3个具有部门指定角色详细信息的组合框)。我的数据库表有外键(deparment,指定和它只返回3个组合框值成员而不是显示元素(文本)。如何链接这些拖曳,以便在选择Combobox1中的用户名时,相应的值应出现在文本框中以及3个组合框中。



这是我的代码:



 私人  void  cmbBoxUpdateEmployee_SelectedIndexChanged_1( object  sender,EventArgs e)
{
changecmbBoxValue();

} panelupdateEmployee.Visible = true ;


public void changecmbBoxValue()
{

尝试
{
textBoxUpdateEmployee.Enabled = true ;
cmbBoxUpdateEmpRoleID.Enabled = true ;
cmbBoxUpdateEmpDepartment.Enabled = true ;
cmbBoxUpdateEmpDesignation.Enabled = true ;
dbobj.Open();
DataSet ds = new DataSet();
if (!string.IsNullOrEmpty(cmbBoxUpdateEmployee.SelectedValue.ToString()))
{
字符串 cmd = 从tblEmployee中选择Name,RoleId,DepartmentId,DesignationId,其中Name =' + cmbBoxUpdateEmployee.SelectedValue + ';

// 我得到system.Datarow转换未完成错误。
ds = dbobj.ExecuteDataset(cmd);
if ((ds.Tables [ 0 ]。Rows.Count)> 0
{
textBoxUpdateEmployee.Text = Convert.ToString(ds.Tables [< span class =code-digit> 0 ]。行[ 0 ] [ 0 ]的ToString());
cmbBoxUpdateEmpRoleID.SelectedIndex = Convert.ToInt32(ds.Tables [ 0 ]。行[ 0 ] [ 1 ]。ToString());
cmbBoxUpdateEmpDepartment.SelectedIndex = Convert.ToInt32(ds.Tables [ 0 ]。行[ 0 ] [ 2 ]。ToString());
cmbBoxUpdateEmpDesignation.SelectedIndex = Convert.ToInt32(ds.Tables [ 0 ]。行[ 0 ] [ 3 ]。ToString());
lblupdatedelete.Text = 更新成功;
EmployeeUpdateInfo();
textBoxUpdateEmployee.Clear();
}
}

}
catch (例外情况)
{
MessageBox.Show( Error !! + ex.Message);
}
最后
{
dbobj.Close();
}


}



如何实现这一目标?任何想法。

解决方案

尝试改变:

 textBoxUpdateEmployee.Text = Convert.ToString(ds。表[ 0 ]。行[ 0 ] [ 0 < /跨度>]的ToString()); 
cmbBoxUpdateEmpRoleID.SelectedIndex = Convert.ToInt32(ds.Tables [ 0 ]。行[ 0 ] [ 1 ]。ToString());
cmbBoxUpdateEmpDepartment.SelectedIndex = Convert.ToInt32(ds.Tables [ 0 ]。行[ 0 ] [ 2 ]。ToString());
cmbBoxUpdateEmpDesignation.SelectedIndex = Convert.ToInt32(ds.Tables [ 0 ]。行[ 0 ] [ 3 ]。ToString());



with:

< pre lang =c#> textBoxUpdateEmployee.Text = ds.Tables [ 0 ]。行[ 0 ] [ 0 ]。ToString();
cmbBoxUpdateEmpRoleID.SelectedText = cmbBoxUpdateEmpRoleID.FindStringExact(ds.Tables [ 0 ]。行[ 0 ] [ 1 ]。ToString());
cmbBoxUpdateEmpDepartment.SelectedText = cmbBoxUpdateEmpDepartment.FindStringExact(ds.Tables [ 0 ]。行[ 0 ] [ 2 ]。ToString());
cmbBoxUpdateEmpDesignation.SelectedText = cmbBoxUpdateEmpDesignation.FindStringExact(ds.Tables [ 0 ]。行[ 0 ] [ 3 ]。ToString());





请关注这些链接:

combobox.selectedtext [ ^ ]

combobox.FindStringExact [ ^ ]

combobox.FindString [ ^ ]


I fetched all the username in Combobox1 displaymember as username and Id as value member.

Now I enabled a groupbox having a textbox,3 combobox and update button when i select an item in Combobox1.considering the valuemember of combobox1 fetching particular user and trying to display those details in groupbox(textbox contains the username,3 combo boxes having department designation role details) .My Database table having foreign keys(deparment,designation and role).It returns only 3 combobox value members not the display memeber(Text).How can i link these tow so that upon selecteing username in Combobox1 the corresponding values should appear in textbox as well as 3 comboboxes.

here is my code:

private void cmbBoxUpdateEmployee_SelectedIndexChanged_1(object sender, EventArgs e)
    {
          changecmbBoxValue();

    }     panelupdateEmployee.Visible = true;


    public void changecmbBoxValue()
    {

        try
        {
            textBoxUpdateEmployee.Enabled = true;
            cmbBoxUpdateEmpRoleID.Enabled = true;
            cmbBoxUpdateEmpDepartment.Enabled = true;
            cmbBoxUpdateEmpDesignation.Enabled = true;
            dbobj.Open();
            DataSet ds = new DataSet();
            if (!string.IsNullOrEmpty(cmbBoxUpdateEmployee.SelectedValue.ToString()))
            {
                string cmd = "select Name,RoleId,DepartmentId,DesignationId from tblEmployee where Name='" + cmbBoxUpdateEmployee.SelectedValue+ "'";

      //I get system.Datarow conversion not done error.
                ds = dbobj.ExecuteDataset(cmd);
                if ((ds.Tables[0].Rows.Count) > 0)
                {
                textBoxUpdateEmployee.Text = Convert.ToString(ds.Tables[0].Rows[0]          [0].ToString());
              cmbBoxUpdateEmpRoleID.SelectedIndex = Convert.ToInt32(ds.Tables[0].Rows[0][1].ToString());
                    cmbBoxUpdateEmpDepartment.SelectedIndex = Convert.ToInt32(ds.Tables[0].Rows[0][2].ToString());
                    cmbBoxUpdateEmpDesignation.SelectedIndex = Convert.ToInt32(ds.Tables[0].Rows[0][3].ToString());
                    lblupdatedelete.Text = " Update Successfully";
                    EmployeeUpdateInfo();
                    textBoxUpdateEmployee.Clear();
                }
            }              

        }
        catch (Exception ex)
        {
            MessageBox.Show("Error!!" + ex.Message);
        }
        finally
        {
            dbobj.Close();
        }


    }


How can i achieve this? any idea.

解决方案

Try to change:

textBoxUpdateEmployee.Text = Convert.ToString(ds.Tables[0].Rows[0]          [0].ToString());
cmbBoxUpdateEmpRoleID.SelectedIndex = Convert.ToInt32(ds.Tables[0].Rows[0][1].ToString());
cmbBoxUpdateEmpDepartment.SelectedIndex = Convert.ToInt32(ds.Tables[0].Rows[0][2].ToString());
cmbBoxUpdateEmpDesignation.SelectedIndex = Convert.ToInt32(ds.Tables[0].Rows[0][3].ToString());


with:

textBoxUpdateEmployee.Text = ds.Tables[0].Rows[0][0].ToString();
cmbBoxUpdateEmpRoleID.SelectedText = cmbBoxUpdateEmpRoleID.FindStringExact(ds.Tables[0].Rows[0][1].ToString());
cmbBoxUpdateEmpDepartment.SelectedText = cmbBoxUpdateEmpDepartment.FindStringExact(ds.Tables[0].Rows[0][2].ToString());
cmbBoxUpdateEmpDesignation.SelectedText = cmbBoxUpdateEmpDesignation.FindStringExact(ds.Tables[0].Rows[0][3].ToString());



Please, follow these links:
combobox.selectedtext[^]
combobox.FindStringExact[^]
combobox.FindString[^]


这篇关于Combox选中的值显示system.Data行无法转换错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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