通过使用其 ValueMember 属性 以编程方式 select 组合框中的项目

Programmatically select an item in combobox by using its ValueMember property

我有一个方法可以获取 ComboBox 对象和要加载到其项目上的查询。

该方法还要求另外 2 个项目:

1.The DB table 的列名并将其设置为 ComboboxDisplayMember 属性

2.The 该数据库 table 列名下每条记录的 ID 并将其设置到 ComboboxValueMember 属性

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

我通过创建一个包含 2 列的查询来使用该方法,即 ID 及其对应的名称。并将其存储在 ComboBoxDisplayMemberValueMember:

DatabaseColumnRecordsToCombobox(cmbSupplier, "SELECT Id, Supplier_Name FROM Supplier WHERE Enable_Flag=1 ORDER BY Supplier_Name", "Supplier_Name", "Id");

抱歉介绍的太长了,我只是想让大家在说出我的问题之前了解我的程序是如何工作的。所以问题是如何使用 ComboBoxValueMember 属性?

select 默认项 DataGridView

我所知道的以编程方式 select 一个项目是通过使用 cmbCategory.SelectedItem = "Supplier A" 但我需要的是 select 通过使用 ValueMember。这样我就可以通过Id设置默认项了。

只需改用 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";