我通常会做网络内容,所以请原谅任何关于这个主题的无知。
我正在尝试从代码隐藏中加载一个组合框,如下所示:
using (var con = new SqlConnection(ConStr)) {
try {
var dt = new DataTable();
var cmd = new SqlCommand("usp_SelectContactDropDown", con) {
CommandType = CommandType.StoredProcedure };
var adapter = new SqlDataAdapter {SelectCommand = cmd};
adapter.Fill(dt);
((ComboBox) Controls.Find(ddContact, true)[0]).DataSource = dt;
((ComboBox) Controls.Find(ddContact, true)[0]).DisplayMember = "DisplayText";
((ComboBox) Controls.Find(ddContact, true)[0]).ValueMember = "ID";
((ComboBox) Controls.Find(ddContact, true)[0]).SelectedIndex = -1;
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
finally { /* Handle the error*/ }
其中ID是int。在此之后,我想根据值成员设置组合框的选定值。然而,这似乎是比较棘手的,我认为它需要。在asp中,这非常简单
ddContact.SelectedValue = o.fk_ContactID.ToString();
答案 0 :(得分:2)
你说WinForms,所以,除非组合在另一个类中,否则这应该有效
ddContact.DisplayMember = "DisplayText";
ddContact.ValueMember = "ID";
ddContact.DataSource = dt;
ddContact.Value = Convert.ToInt32(dt.Rows[0]["ID"]);
此外,我假设您已从查询中找到至少一条记录