我目前正在使用Access数据库中一列的值填充一个组合框,我希望在其中获取相应的主键值,以便稍后在我的程序中使用。
例如:表中的两列,如ID(PK)和标题
使用Title填充组合框,如何获得相应的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**
答案 0 :(得分:2)
从您发布的代码中,您没有使用数据绑定 - 而只是手动将它们添加到循环中。
您应该查看使用DataBinding - Example for Binding a Windows Forms ComboBox
如果您希望继续使用当前方法,则可以使用ComboBoxItem上的Tag属性来存储您希望使用的数据。
例如:
while (dr.Read())
{
comboBoxTitle.Items.Add(new ComboBoxItem() { Name = dr["Title"], Tag = dr["titleID"]});
}
要稍后访问该值,只需查看Tag property即可。
答案 1 :(得分:0)
您必须设置ComboBox的两个属性。 DisplayMember应该是您将向用户显示的显示值。 ValueMember应该是数据库中ID的值。
这适用于System.Windows.Forms.ComboBox类