2013-10-10 41 views
1

我想检查表中的名称是否已经列在组合框中,如果不是,请插入。如果不插入。我曾尝试以下:检查表中的名称是否已列在wpf中的组合框中

public void display() 
{  
    try 
    { 
     sc.Open(); 
     string Query = "select * from Part"; 
     SqlCommand createCommand = new SqlCommand(Query, sc); 
     SqlDataReader dr = createCommand.ExecuteReader(); 
     while (dr.Read()) 
     { 
      string Name = dr.GetString(1); 

      if (Name != cbPartners.Text) 
      { 
       cbPart.Items.Add(Name);//Displaying a list in the Combo Box 
      } 
      else 
      { 
       cbPart.Items.Clear(); 
      } 
     } 
     sc.Close(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
+0

使用“名称= @名称”部分中的select count(*)(或任何是您的列的名称),新的SqlParameter(“@ Name”,SqlDataType.NVarChar)以使用cbPartners.Text值查询和cmd.ExecuteScalar来计算匹配记录的数量。它会比你已经写的更优化。 –

+0

您标记了winform,但在标题中您有WPF! – Damith

回答

0

试试这个(使用LINQ)

if (cbPart.Items.Cast<ListItem>().Select(f => f.Text).Contains(Name)) 
     { 
      cbPart.Items.Add(Name);//Displaying a list in the Combo Box 
     } 
      else 
      ... 
+0

。文本不被识别? – user2631662

0
if (cbPart.FindStringExact(Name) == -1) 
{ 
    cbPart.Items.Add(Name); 
} 

为侧面说明,你并不需要选择所有列,因为你只需要一列

string Query = "select partname from Part"; 

尚不清楚为什么你使用cbPart.Items.Clear();去除else情况下,所有的项目,该行会雷莫已找到匹配项目时已存在的组合框项目。

+0

FindByText显示错误:.ItemCollection不包含FindByText的定义并且没有扩展名... – user2631662

+0

@ user2631662检查我更新的答案 – Damith

+0

ok我收到同样的错误,认为它是因为它的winforms? – user2631662

相关问题