【问题标题】:save a text and a value into combobox from a database table将文本和值从数据库表中保存到组合框中
【发布时间】:2016-09-10 10:30:15
【问题描述】:

我想从表“EMPLOYE”(SQL DB)中获取用户的姓名和姓氏,并将它们保存在组合框中。 我想将每个用户的 ID 保存在组合框值中。 所以这是我的代码 =>

       public void fill_combobox_users()
    {
        // auto-complete
        comboBox3.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        comboBox3.AutoCompleteSource = AutoCompleteSource.ListItems;

        da = new SqlDataAdapter("select ID_EMP, concat(NOM_EMP,' ',PRENOM_EMP) as 'nom_prenom' from EMPLOYE", cn);
        DataTable dt = new DataTable();
        try
        {
            cn.Open();
            da.Fill(dt);
            comboBox3.DataSource = dt;
            comboBox3.DisplayMember = "nom_prenom";
            comboBox3.ValueMember = "ID_EMP";
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

        finally
        {
            cn.Close();
        }

    }

全名显示没有问题,但值 no !! 问题是 combobox3.ValueMember 采用字符串“ID_EMP”而不是表 EMPLOYE 中的值!

有什么解决办法吗?

【问题讨论】:

  • 参见SelectedValue 属性。
  • 你在使用 WPF 吗?
  • 不,我不@UmairFarooq .. 我使用的是简单的winforms(VS 2015)
  • @AlexanderPetrov 它不起作用!

标签: c# winforms combobox


【解决方案1】:

像这样编辑你的 sql 查询。应该工作

 public void fill_combobox_users()
        {
            // auto-complete
            comboBox3.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            comboBox3.AutoCompleteSource = AutoCompleteSource.ListItems;

            da = new SqlDataAdapter("select ID_EMP,(NOM_EMP+ ' ' + PRENOM_EMP) AS NOMM from EMPLOYE", cn);
            DataTable dt = new DataTable();
            try
            {
                cn.Open();
                da.Fill(dt);
                comboBox3.DataSource = dt;
                comboBox3.DisplayMember = "NOMM";
                comboBox3.ValueMember = "ID_EMP";
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            finally
            {
                cn.Close();
            }

        }

【讨论】:

  • 非常感谢但是我如何从组合框中获取值.. 我尝试使用此代码进行测试: private void comboBox3_SelectedIndexChanged(object sender, EventArgs e) { MessageBox.Show(comboBox3.ValueMember.ToString ());但消息框显示为空!没有任何值
  • 使用它comboBox3.SelectedValue.ToString();
【解决方案2】:

要获得价值,请尝试

MessageBox.Show(comboBox3.SelectedValue.ToString())

【讨论】:

  • 我试过 MessageBox.Show(combobox3.SelectedValue.toString());对于每个选定的项目,它都会出现 System.Data.DataRowView !
  • 尝试更改组合框绑定的顺序并最后分配数据源..按以下顺序进行:comboBox3.DisplayMember = "nom_prenom"; comboBox3.ValueMember = "ID_EMP"; comboBox3.DataSource = dt;
  • 不不不对不起..我的代码错了!我写了 combobox1 而不是 combobox3 现在可以正常工作了.. 谢谢兄弟 :)
【解决方案3】:

列名是您要使用列索引的问题,请参见此处。

 public void fill_combobox_users()
    {
        // auto-complete
        comboBox3.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        comboBox3.AutoCompleteSource = AutoCompleteSource.ListItems;

        da = new SqlDataAdapter("select ID_EMP,(NOM_EMP+ ' ' + PRENOM_EMP) AS NOMM from EMPLOYE", cn);
        DataTable dt = new DataTable();
        try
        {
            cn.Open();
            da.Fill(dt);
            comboBox3.DataSource = dt;
            comboBox3.DisplayMember = dt.Columns[1].ColumnName;
            comboBox3.ValueMember = dt.Columns[0].ColumnName;
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

        finally
        {
            cn.Close();
        }

    }

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 2012-09-23
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2018-06-08
    • 1970-01-01
    相关资源
    最近更新 更多