2014-06-09 118 views
0

我有一个组合框,它的valuemember具有值:AA,BB,CC,DD,EE。检查组合框的值成员的值c#.net windows窗体

Combobox Valuemember从数据集中填充。

用户在文本框中输入一个值,我需要能够检查在文本框中输入的值是否为组合框的一部分。

组合框填充如下:

OracleCommand oraCmd = new OracleCommand(); 
oraCmd.Connection = oraConn; 
oraCmd.CommandType = CommandType.StoredProcedure; 
oraCmd.CommandText = "sp1"; 

OracleCommandBuilder.DeriveParameters(oraCmd); 
oraCmd.Parameters["Val1"].Value = "Val1"; 
oraCmd.Parameters["Val2"].Value = "Val2"; 

//Populate DataSet 
OracleDataAdapter oraAdapter = new OracleDataAdapter(oraCmd); 
DataSet oraDataSet = new DataSet(); 
oraAdapter.Fill(oraDataSet); 

combobox1.ValueMember = oraDataSet.Tables[0].Columns["Val1"].ToString(); 
combobox1.DisplayMember = oraDataSet.Tables[0].Columns["Val2"].ToString(); 
combobox1.DataSource = oraDataSet.Tables[0].DefaultView; 

我试过,但它不工作:

if (combobox1.ValueMember.Contains("XX")) 
{ 
    combobox1.SelectedItem = "XX"; 
} 
else 
{ 
    combobox1.SelectedItem = ""; 
} 

请帮助!

+0

我认为你在'combobox1.Items'属性中有值,'ValueMember'用于指定数据源e组合框的属性。 – Habib

+0

您是否可以更新您的问题以显示您用于填充“ComboBox”的代码,以及将值分配给“ValueMember”和“DisplayMember”(如果有)的位置? –

+0

Combobox Valuemember从数据集填充。我试过使用: – user1100941

回答

1

ValueMemberDisplayMember属性只是指定底层数据源中的哪些值应代表每个项目的底层值以及显示给用户的值。

尝试分配数据源,和值和显示部件,比如这个:

combobox1.DataSource = oraDataSet.Tables[0]; 
combobox1.ValueMember = "Val1"; 
combobox1.DisplayMember = "Val2"; 

然后尝试搜索所需的值是这样的:

if (((DataTable)combobox1.DataSource).AsEnumerable() 
            .Cast<DataRow>() 
            .Select(x => Convert.ToString(x["Val1"])) 
            .Contains("XX")) 
{ 
    ... // value found in combobox 
} 

替代语法,你可以试试:

if (comboBox1.Items.Cast<DataRowView>() 
        .Select(x => Convert.ToString(x["Val1"]) 
        .Contains("XX")) 
{ 
    ... 
}