检查组合框是否包含从 SQL 读取的项
本文关键字:SQL 读取 包含 检查组 组合 是否 检查 | 更新日期: 2023-09-27 18:32:29
我得到了这个SqlCommand
,根据数据库中read
的内容,selects
combo-box
中的项目。
组合框包含 4 个值。(应选择其中之一)
我有一个问题,因为我需要检查从 SQL DB 读取的值是否是组合框项目之一。
请问代码应该是什么样子的?
SqlCommand command= new SqlCommand("SELECT * FROM client WHERE ID_K='" + choose_id + "'", con);
con.Open();
SqlDataReader read= command.ExecuteReader();
if (read.Read())
{
if (read["price"] != DBNull.Value)
{
cb_choose_price.SelectedItem = read.GetString(read.GetOrdinal("price"));
}} con.Close();
组合
框组件的SelectedItem
属性绑定到存储在其中的实际对象(或者更确切地说是对这些对象的引用)。如果要通过显示的字符串设置所选项目,则必须获取项目集合,将它们转换为字符串,然后选择适当的项目。查看人员类型的代码示例。
将组合框绑定到数据源时,它会使用 ToString() 方法显示引用的对象。例如:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
var persons = new List<Person> {
new Person("Adam", 10),
new Person("Thomas", 20) };
comboBox.DataSource = persons;
comboBox.DisplayMember = "Name";
comboBox.SelectedItem = "Adam"; // this will not display a person named Thomas because the combobox is binded to the Person type
comboBox.SelectedItem = persons.Where(p => p.Name == "Thomas").Single(); // this will show Adam if it is available in the comboBox
根据评论进行更新:
我想我明白所有这些,但是有没有办法检查该项目是否 应该选择的(来自 SQL DB 的字符串)甚至存在于 组合框中的项目?
var item = comboBox1.Items.Cast<Person>();
bool isThereAdam = item.Any(i => i.Name == "Adam");
如果使用数据表执行数据绑定,这应该可以工作:
private void BindClientCombobox(DataTable clientDataTable)
{
this.cbClients.DataSource = clientDataTable;
this.cbClients.ValueMember = "client_id";
this.cbClients.DisplayMember = "client_name";
}
private bool ContainsClientID(int clientID)
{
return this.cbClients.Items.Cast<DataRowView>().Any(drv => (int)drv.Row.ItemArray[0] == clientID);
}
private bool ContainsClientName(string clientName)
{
return this.cbClients.Items.Cast<DataRowView>().Any(drv => (string)drv.Row.ItemArray[1] == clientName);
}