读取由词典填充DisplayMember和ValueMember的ComboBox值

时间:2018-09-27 22:09:04

标签: c# combobox .net-4.0

我已经将Dictionary作为ComboBox的数据源,然后将其中的ValueMember中的ComboBox保存到数据库中

Dictionary<string, int> GravelCount = new Dictionary<string, int>
{
    {"val1",1},
    {"val2",2},
};
CB_Place.DataSource = new BindingSource(GravelCount, null);
CB_Place.DisplayMember = "Key";
CB_Place.ValueMember = "Value";
CB_Place.SelectedIndex = -1;

现在,当我尝试阅读时,它是ValueMember并显示DisplayMember,如下所示,在第CB_Place.SelectedItem = sqlReader[1].ToString();行中没有任何反应,combobox未填充ValueMember

public int GetPersonification()
{
    string connStr = ConfigurationManager.ConnectionStrings["SRJDconnstr"].ToString();
    string cmdStr = @"SELECT SIZ,
                                             PLACE,
                                             ONE_OR_MORE,
                                             R_OR_L,
                                             EKO_OR_ASH,
                                             NOTICE
                                     FROM PERSONIFICATION
                                   WHERE ID=@ID;";

    using (SqlConnection conn = new SqlConnection(connStr))
    using (SqlCommand cmd = new SqlCommand(cmdStr, conn))
    {
            conn.Open();
            cmd.CommandText = cmdStr;
            cmd.CommandType = CommandType.Text;

            cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.Int)).Value = tb_id.text;

            SqlDataReader sqlReader = cmd.ExecuteReader();

            while (sqlReader.Read())
            {
                TB_Size.Text = sqlReader[0].ToString();
                CB_Place.SelectedItem = sqlReader[1].ToString();
                TB_Note.Text = sqlReader[5].ToString();
            }
    }
}

我也尝试使用ValueMember((KeyValuePair<string,int>)CB_type.SelectedItem).Value.ToString();

0 个答案:

没有答案