0

Combobox1 displaymember のすべてのユーザー名をユーザー名として取得し、ID を値メンバーとして取得しました。

特定のユーザーをフェッチし、グループボックスにそれらの詳細を表示しようとしているコンボボックス1の値メンバーを考慮して、コンボボックス1のアイテムを選択すると、テキストボックス、3コンボボックス、および更新ボタンを持つグループボックスが有効になりました(テキストボックスにはユーザー名が含まれ、部門指定を持つ3つのコンボボックスロールの詳細) .外部キー (deparment、designation、および role) を持つ My Database テーブル。表示メンバー (Text) ではなく、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 に答える