使用c#中的组合框中的选定值传递参数

时间:2014-01-25 17:46:33

标签: c# .net winforms combobox .net-4.5

我的表单上有combobox1,它由数据源绑定,它显示数据表中的值。

然后我需要填充combobox2,但是触发的存储过程需要一个参数。

如何将combobox1中的selectedValue传递到数据源中,以便combobox2显示其值?

到目前为止,这是我的代码:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    string databaseName = string.Empty;
    if (comboBox1.SelectedValue != null) databaseName = comboBox1.SelectedValue.ToString();
    comboBox2.DataSource(FindColumn.GetData(databaseName));
}

1 个答案:

答案 0 :(得分:0)

这是如何将ComboBox绑定到DataTable数据源以及如何从所选项中获取值的示例(以便稍后您可以使用该值填充另一个组合框)

 // On constructor - Quickly create some table and fill with some data
 DataTable dt = new DataTable();
 dt.Columns.Add("a");
 dt.Columns.Add("b");
 dt.Columns.Add("c");
 dt.Rows.Add("1", "2", "aaa");
 dt.Rows.Add("3", "4", "bbb");
 // setup combo box data binding
 comboBox1.DataSource = dt;
 comboBox1.DisplayMember = "b";
 comboBox1.ValueMember = "a";

请注意,我们不引用列“c”

void button1_click()
{
    MessageBox.Show(((DataRowView )comboBox1.SelectedItem)[2].ToString ());
}

这将导致显示“aaa”或“bbb”。现在,您可以使用该值来调用存储过程。

基本上,绑定DataTable时,每个组合项都是DataRowView。所有表数据都可用于您选择的行。

注意

comboBox1.DisplayMember = "b";
comboBox1.ValueMember = "a";

通常这就足够了。您可以将一些id用作ValueMember并使用该ID进行CRUD操作。但同样,上面的示例显示您可以通过SelectedItem属性提供更多不同的值。