【问题标题】:check value in valuemember of combobox c# .net windows forms检查组合框 c# .net windows 窗体的 valuemember 中的值
【发布时间】:2014-06-09 17:52:21
【问题描述】:

我有一个组合框,它的 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 = "";
}

请帮忙!

【问题讨论】:

  • 我认为您在combobox1.Items 属性中有值,ValueMember 用于为组合框指定数据源属性。
  • 组合框值成员是从数据集中填充的。我尝试使用:
  • ComboBox1.DisplayMember 呢?你看过了吗
  • 我在上面的主要问题中添加了填充组合框的代码。请看一下并提出建议。谢谢
  • @DJKRAZE ComboBox1.DisplayMember 返回空值。

标签: c# .net winforms combobox


【解决方案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"))
{
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多