无法使用c#在Winform中使用空ValueMember在ListControl中设置SelectedValue

Af'*_*faq 4 c# winforms

我有一个组合框,可从数据库加载数据,但出现一个错误,尽管我已将selectValue设置为表的主键,但无法在ListControl中设置selectedValue。但是仍然在运行时出现错误。这是代码。

    private void FormAddStudent_Load(object sender, EventArgs e)
    {
        //For combobox Campuse
        cBoxCampus.DataSource = GetAllCampuses();

        cBoxCampus.DisplayMember = "campus_name";
        cBoxCampus.SelectedValue = "campus_id";
        //Foe ComboBox Department
        cBoxDepartment.DataSource = GetAllDepartment();

        cBoxDepartment.DisplayMember = "depname"; 
        cBoxDepartment.SelectedValue = "depid";
    }
Run Code Online (Sandbox Code Playgroud)

这是插入按钮背后的代码

        private void btnInsert_Click(object sender, EventArgs e)
    {
        string CS = ConfigurationManager.ConnectionStrings["UMSdbConnectionString"].ConnectionString;
        using (SqlConnection con = new SqlConnection(CS))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("SELECT ISNULL(MAX(std_id),0)+1 FROM Student", con);
            cmd.CommandType = CommandType.Text;
            tbID.Text = cmd.ExecuteScalar().ToString();

            {

                using (SqlCommand cmd1 = new SqlCommand("INSERT INTO Student (std_id,std_name,std_f_name,std_mob,std_gender,std_cnic,std_campus,std_dep,std_address,std_batch,std_batch_year)VALUES(@std_id,@std_name,@std_f_name,@std_mob,@std_gender,@std_cnic,@std_campus,@std_dep,@std_address,@std_batch,@std_batch_year)VALUES(@campus_id,@campus_name)", con))
                {

                    cmd1.CommandType = CommandType.Text;
                    cmd1.Parameters.AddWithValue("@std_id", tbID.Text);
                    cmd1.Parameters.AddWithValue("@std_name", tbName.Text);
                    cmd1.Parameters.AddWithValue("@std_f_name", tbFatherName.Text);
                    cmd1.Parameters.AddWithValue("@std_mob", tbMobNumber.Text);
                    cmd1.Parameters.AddWithValue("@std_gender", GetGender());
                    cmd1.Parameters.AddWithValue("@std_cnic", tbMobNumber.Text);
                    cmd1.Parameters.AddWithValue("@std_campus",(cBoxCampus.SelectedIndex == -1) ? 0: cBoxCampus.SelectedValue);
                    cmd1.Parameters.AddWithValue("@std_dep", (cBoxDepartment.SelectedIndex == -1) ? 0 : cBoxDepartment.SelectedValue);
                    cmd1.Parameters.AddWithValue("@std_address", tbAddress.Text);
                    cmd1.Parameters.AddWithValue("@std_batch", tbBatchNo.Text);
                    cmd1.Parameters.AddWithValue("@std_batch_year", tbBatchYear.Text);
                    cmd1.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show("Record Saved");

                }
            }


        }
    }
Run Code Online (Sandbox Code Playgroud)

Jay*_*hav 5

更换

cBoxCampus.SelectedValue = "campus_id";
Run Code Online (Sandbox Code Playgroud)

随着ListControl.ValueMember房产

cBoxCampus.ValueMember = "campus_id";
Run Code Online (Sandbox Code Playgroud)

做类似的操作 cBoxDepartment