组合框按Id选择项目但显示名称

时间:2016-12-15 20:57:04

标签: c# sql winforms combobox

我从数据库获取数据以填充我的组合框,所以假设我有这样的数据:

|Column ID | Column Name |
|        1 |       Item1 |
|        2 |       Item2 |
|        3 |       Item3 |

所以现在我得到Column Name并用它填充组合框但现在从其他一些功能我正在更改组合框选择的项目和我想要的是填充组合框以从数据库分配ID所以当我如果将组合框选定的项目更改为ID 3,则更改为项目3

2 个答案:

答案 0 :(得分:0)

我知道了。这是答案:

divizija.DisplayMember = "Column Name";
divizija.ValueMember = "Column Id";

List<Items> items = new List<Items>();
FbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
    items.Add(new Items { Id = (int)dr[0], Name = (string)dr[1]});
}    
divizija.DataSource = items;
divizija.SelectedValue = divizijaDokumenta;

对于项目列表,我需要上课,这里是

public class Items
{
    public int Id { get; set; }
    public string Name { get; set; }
}

答案 1 :(得分:0)

您不需要类或从db数据创建List。 DataTable可以正常使用:

string sql = "SELECT Id, Descr FROM ccolor";

using (MySqlConnection dbcon = new MySqlConnection(MySQLConnStr))
using (MySqlCommand cmd = new MySqlCommand(sql, dbcon))
{
    DataTable dt = new DataTable();
    dbcon.Open();

    // fill the datatable
    dt.Load(cmd.ExecuteReader());

    // set up cbo
    cboColor.DisplayMember = "Descr";
    cboColor.ValueMember = "Id";
    cboColor.DataSource = dt;
}

它甚至不需要是持久表。然后,回复SelectedValueChanged事件:

Console.WriteLine("The value of {0} is {1}", cboColor.Text, cboColor.SelectedValue);
  

橙色的值是5