以编程方式使用其ValueMember属性选择组合框中的项目

时间:2016-04-26 14:55:02

标签: c# combobox valuemember

我有一个方法可以获取ComboBox对象并在其项目上加载查询。

该方法还要求另外2项:

1.数据库表的列名并将其设置为Combobox的{​​{1}}属性

2.该数据库表格列名下每条记录的ID,并将其设置为DisplayMember' s Combobox属性

ValueMember

我通过创建一个包含2列的查询来使用该方法,即Id及其对应的Name。并将其存储在public void DatabaseColumnRecordsToCombobox(ComboBox cbx, String query, String displayMember, String valueMember) { try { cmd = new MySqlCommand(query, connection); da = new MySqlDataAdapter(cmd); tbl = new DataTable(); da.Fill(tbl); cbx.DataSource = tbl; cbx.DisplayMember = displayMember; cbx.ValueMember = valueMember; } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { this.CloseConnection(); } } ComboBoxDisplayMember中:

ValueMember

我为长篇介绍道歉,我只是希望大家在讲述我的问题之前了解我的计划是如何运作的。问题是如何使用DatabaseColumnRecordsToCombobox(cmbSupplier, "SELECT Id, Supplier_Name FROM Supplier WHERE Enable_Flag=1 ORDER BY Supplier_Name", "Supplier_Name", "Id"); DataGridView属性选择ComboBox的默认项?

我以编程方式选择项目时所知道的只是使用ValueMember,但我需要的是使用cmbCategory.SelectedItem = "Supplier A"进行选择。这样我可以通过Id设置默认项目。

1 个答案:

答案 0 :(得分:1)

只需使用SelectedValue:

comboBox1.SelectedValue = "2";

一个非常简单的例子,只是为了表明我的意思:

        DataTable dt = new DataTable();
        dt.Clear();
        dt.Columns.Add("Id");
        dt.Columns.Add("Supplier_Name");
        DataRow r = dt.NewRow();
        r["Id"] = "1";
        r["Supplier_Name"] = "Supplier A";
        dt.Rows.Add(r);
        r = dt.NewRow();
        r["Id"] = "2";
        r["Supplier_Name"] = "Supplier B";
        dt.Rows.Add(r);
        r = dt.NewRow();
        r["Id"] = "3";
        r["Supplier_Name"] = "Supplier C";
        dt.Rows.Add(r);

        comboBox1.DataSource = dt;
        comboBox1.DisplayMember = "Supplier_Name";
        comboBox1.ValueMember = "Id";

        //This will set the ComboBox to "Supplier B"
        comboBox1.SelectedValue = "2";