我有一个ComboBox,它从DataTable对象获取Text和Value字段。
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
}
在执行包含操作时,我不知道要访问“文本”字段。当我尝试不使用新语法时,它将查找“文本”和“值”字段组合。如何在ComboBox的“文本”字段中包含内容?
答案 0 :(得分:1)
一种方法是创建一个类。
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
}