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

C# 组合框按Id选择项目,但显示名称,c#,sql,winforms,combobox,C#,Sql,Winforms,Combobox,我从数据库获取数据以填充我的组合框,因此假设我有如下数据: |Column ID | Column Name | | 1 | Item1 | | 2 | Item2 | | 3 | Item3 | 所以现在我得到了列名并用它填充组合框,但现在从其他一些函数中,我正在更改组合框的选定项,我想要的是在填充组合框时从数据库分配ID,所以当我说要将组合框的选定项更改为ID 3时,它将更改为项目3我计算出来了。答案如下: di

我从数据库获取数据以填充我的组合框,因此假设我有如下数据:

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

所以现在我得到了
列名并用它填充组合框,但现在从其他一些函数中,我正在更改组合框的选定项,我想要的是在填充组合框时从数据库分配ID,所以当我说要将组合框的选定项更改为ID 3时,它将更改为项目3

我计算出来了。答案如下:

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;

您不需要类,也不需要从db数据创建列表。
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


.DisplayMember=“Name”
.ValueMember=“Id”
@puropoix能否更具体一些?使用具有DB值的数据表作为数据源
Console.WriteLine("The value of {0} is {1}", cboColor.Text, cboColor.SelectedValue);