0

我将 Combobox1 displaymember 中的所有用户名作为用户名,并将 Id 作为值成员。

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

这是我的代码:

     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();
        }


    }
  public void RoleData()
    {
        DataSet ds = new DataSet();
        string query = "select [Id],[Name] from tbl where IsDeleted=0";
        ds = dbobj.ExecuteDataset(query);
        cmbBoxUpdateRole.DataSource = ds.Tables["tablename"];
        cmbBoxUpdateRole.DisplayMember = "Name";
        cmbBoxUpdateRole.ValueMember = "Id";
        cmbBoxDeleteRole.DataSource = ds.Tables["tablename"];
        cmbBoxDeleteRole.DisplayMember = "Name";
        cmbBoxDeleteRole.ValueMember = "Id";

     }//role combobox..for department,designation also i did the same way to display in 3 comboboxes

我怎样才能做到这一点?任何的想法

4

1 回答 1

0

我解决了我自己的问题。我selectedIndex改为selectedValue

cmbBoxUpdateEmpRoleID.SelectedValue = 
                             Convert.ToInt32(ds.Tables[0].Rows[0][1].ToString());
cmbBoxUpdateEmpDepartment.SelectedValue = 
                             Convert.ToInt32(ds.Tables[0].Rows[0][2].ToString());
cmbBoxUpdateEmpDesignation.SelectedValue = 
                             Convert.ToInt32(ds.Tables[0].Rows[o][3].Tostring());

我只需要changecmbvalue()selectedValuechanged事件中调用该方法。它按预期工作。

于 2013-04-05T18:16:20.443 回答