【发布时间】:2013-08-02 22:09:51
【问题描述】:
我通常在做网络工作,所以请原谅对这个主题的任何无知。
我正在尝试从代码隐藏中加载一个组合框,如下所示:
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();
【问题讨论】:
-
为什么要使用 Controls.Find?直接语法(如果在同一个类上)有效
-
不要使用
ToString()。与操作字符串的 ASP.NET 不同,WinForms 使用类型敏感的比较。 -
@Steve,说句公道话,他说他对这个话题一无所知 - 所以你的评论是没有实际意义的 :)
-
@AlexSkalozub 看来问题是 ToString() 调用。如果你把它作为一个答案,我会这样标记它。谢谢大家