C#用两列填充组合框

C#用两列填充组合框,c#,sql,winforms,ms-access-2010,C#,Sql,Winforms,Ms Access 2010,我目前正在用Access数据库中一列的值填充一个组合框,我希望得到它对应的主键值,以便以后在我的程序中使用 例如:表中的两列,如ID(PK)和标题 用标题填充组合框,如何获得其相应的ID值 我唯一的想法是创建并运行另一个查询,以获取其他列值匹配的id,但这似乎是一种低效的方法 从我的理解和阅读来看,这是不容易做到的,但任何关于我如何克服这一点的建议都将不胜感激 到目前为止,我在使用winforms方面所做的工作 private void populateBox() {

我目前正在用Access数据库中一列的值填充一个组合框,我希望得到它对应的主键值,以便以后在我的程序中使用

例如:表中的两列,如ID(PK)和标题

用标题填充组合框,如何获得其相应的ID值

我唯一的想法是创建并运行另一个查询,以获取其他列值匹配的id,但这似乎是一种低效的方法

从我的理解和阅读来看,这是不容易做到的,但任何关于我如何克服这一点的建议都将不胜感激

到目前为止,我在使用winforms方面所做的工作

      private void populateBox()
    {
        oleDbConnectionDARS.Open();
        dr = oleDbCommandTitle.ExecuteReader();
        comboBoxTitle.Items.Clear();

        while (dr.Read())
        {
            comboBoxTitle.Items.Add(dr["Title"]);
        }
        dr.Close();
        oleDbConnectionDARS.Close();
    }



   **SELECT        titleID, Title
   FROM            tbl_Book**

您必须设置组合框的两个属性。 DisplayMember应该是您将向用户显示的显示值。 ValueMember应该是数据库中ID的值


这适用于System.Windows.Forms.ComboBox类

根据您发布的代码,您没有使用数据绑定,而只是在循环中手动添加它们

您应该看看如何使用数据绑定-

如果您希望继续使用当前方法,则可以使用ComboBoxItem上的Tag属性来存储您希望使用的数据

例如:


要在以后访问该值,只需查看

你在干什么?ASP.NET WebForms、ASP.NET MVC、WinForms、WPF、Silverlight、Windows Phone?现在显示如何绑定组合框的代码,我们可以向您展示如何修改它。查看您的示例,您可以将查询结果添加到DataTable,然后使用display member和value member将组合的DataSource属性设置为结果DataTable,但是,如果他们更改了选择,它将保持不变,与以前的选择一致。这是怎么回事?。您可以访问SelectedValue和SelectedText以确定所选内容的属性
while (dr.Read())
{
   comboBoxTitle.Items.Add(new ComboBoxItem() { Name = dr["Title"], Tag = dr["titleID"]});
}