在c# .net Windows窗体的组合框valuemember中检查值
本文关键字:valuemember 检查 组合 net Windows 窗体 | 更新日期: 2023-09-27 18:08:01
我有一个组合框,它的valuemember的值为:AA, BB, CC, DD, EE。
Combobox Valuemember是从数据集填充的。
用户在文本框中输入一个值,我需要能够检查在文本框中输入的值是否属于组合框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 = "";
}
请帮助!
ValueMember
和DisplayMember
属性只是指定底层数据源中的哪些值应该表示每个项目的底层值,以及显示给用户的值。
尝试分配数据源、值和显示成员,像这样:
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"))
{
...
}