2013-10-10 75 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

相關問題