1

我通常在做网络事情,所以请原谅对这个话题的任何无知。

我正在尝试从代码隐藏中加载一个组合框,如下所示:

        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(); 

我检查了其他一些问题(Q1Q2),这些问题似乎是指通过显示成员设置值。最优雅的方法是什么?先感谢您。

4

1 回答 1

2

你说 WinForms,所以,除非组合在另一个类中,否则这应该有效

ddContact.DisplayMember = "DisplayText";
ddContact.ValueMember = "ID";
ddContact.DataSource = dt;
ddContact.Value = Convert.ToInt32(dt.Rows[0]["ID"]);

我还假设您从查询中找到了至少一条记录

于 2013-08-01T20:01:25.003 回答