如何访问组合框的指定字段



我有一个ComboBox,它从DataTable对象中获取文本和值字段。

 foreach (DataRow dr in dtSip.Rows)
       {
         cbxSipNo.Items.Add(new { Text = dr[0].ToString() ,Value = dr[2].ToString()});
       }
       cbxSipNo.ValueMember = "Value";
       cbxSipNo.DisplayMember = "Text";

我的问题是在访问指定的文本和值字段时,如下所示。

if (cbxSipNo.Items.Contains( new { Text= row.Cells[5].Value.ToString()} )
   {
    //some code
   }

在执行包含时,我无法弄清楚访问文本字段。当我尝试没有新语法时,它会查找文本和值字段组合。如何在组合框的文本字段中执行包含操作?

一种方法是创建一个类。

class MyItem
{
    public string Text { get; set; }
    public string Value { get; set; }
}

并将您的数据行值添加到上述类的对象到组合框中,例如

foreach (DataRow dr in dtSip.Rows)
{
    cbxSipNo.Items.Add(new MyItem { Text = Convert.ToString(dr[0]), Value = Convert.ToString(dr[2]) });
}

然后,您可以将组合框项目强制转换为类MyItem上方,然后检查包含数据行值的组合框中是否存在Any项目

string str = row.Cells[5].Value; 
if (cbxSipNo.Items.Cast<MyItem>().Any(x => Convert.ToString(str).Contains(x.Text)))
{
    //some code
}

最新更新