【问题标题】:populate with item and assign value to comboBox from database in C# [duplicate]在 C# 中从数据库中填充项目并将值分配给组合框 [重复]
【发布时间】:2014-11-14 09:33:40
【问题描述】:

我正在尝试从数据库中检索记录并将它们分配给组合框。我只是这样做了,但是当我尝试从组合框中选择任何人时,我总是得到组合框中最后一条记录的值。请帮我。这是我的代码。

        command = new SqlCommand("Select supplier_id, supplier_name from tbl_supplier", MySqlConnection);
        m_dr = command.ExecuteReader();

        while (m_dr.Read())
        {
            comboBoxSupplier.Items.Add(m_dr["supplier_name"].ToString());

            comboBoxSupplier.ValueMember = (m_dr["supplier_id"].ToString());

            comboBoxSupplier.DisplayMember = (m_dr["supplier_name"].ToString());
        }
        m_dr.Close();

【问题讨论】:

  • 旁注:而不是调用m_dr.Close()commandm_dr 括在使用中:using (var m_dr = ...) {...}
  • 使用数据表或 IList 数据源来填充您的组合框。DataReader 将不起作用

标签: c# sql-server


【解决方案1】:

链接问题的答案:Fill Combobox from database

cmbTripName.ValueMember = "supplier_id"; cmbTripName.DisplayMember = "供应商名称";

指向循环外的列。 (我试过这个,它对我有用)

【讨论】:

    【解决方案2】:
    DataTable dt = new DataTable();
    dt.Load(cmd.ExecuteReader());
    
    int count = 0;
    foreach (datarow row in dt)
    {
        count += 1;
        comboBoxSupplier.Items.Add(dt[count]["supplier_name"].ToString());   
    }
    

    【讨论】:

    • 不鼓励在 stackoverflow 上使用纯代码的答案。最好解释一下代码的作用以及它如何解决问题。这有助于未来的用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多