我有一个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
}