通过使用其 ValueMember 属性 以编程方式 select 组合框中的项目
Programmatically select an item in combobox by using its ValueMember property
我有一个方法可以获取 ComboBox
对象和要加载到其项目上的查询。
该方法还要求另外 2 个项目:
1.The DB table 的列名并将其设置为 Combobox
的 DisplayMember
属性
2.The 该数据库 table 列名下每条记录的 ID 并将其设置到 Combobox
的 ValueMember
属性
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 及其对应的名称。并将其存储在 ComboBox
的 DisplayMember
和 ValueMember
:
DatabaseColumnRecordsToCombobox(cmbSupplier, "SELECT Id, Supplier_Name FROM Supplier WHERE Enable_Flag=1 ORDER BY Supplier_Name", "Supplier_Name", "Id");
抱歉介绍的太长了,我只是想让大家在说出我的问题之前了解我的程序是如何工作的。所以问题是如何使用 ComboBox
的 ValueMember
属性?
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";
我有一个方法可以获取 ComboBox
对象和要加载到其项目上的查询。
该方法还要求另外 2 个项目:
1.The DB table 的列名并将其设置为 Combobox
的 DisplayMember
属性
2.The 该数据库 table 列名下每条记录的 ID 并将其设置到 Combobox
的 ValueMember
属性
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 及其对应的名称。并将其存储在 ComboBox
的 DisplayMember
和 ValueMember
:
DatabaseColumnRecordsToCombobox(cmbSupplier, "SELECT Id, Supplier_Name FROM Supplier WHERE Enable_Flag=1 ORDER BY Supplier_Name", "Supplier_Name", "Id");
抱歉介绍的太长了,我只是想让大家在说出我的问题之前了解我的程序是如何工作的。所以问题是如何使用 ComboBox
的 ValueMember
属性?
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";