2016-12-05 35 views
1

我有填充有值的ComboBox這個簡單的查詢:讀取任何字母爲我的ComboBox

void fillCari()//fill Cari-med dropdown with values 
    { 
     try 
     { 

      string connectionString = "Data Source=LPMSW09000012JD\\SQLEXPRESS;Initial Catalog=Carimed_Inventory;Integrated Security=True"; 
      SqlConnection con2 = new SqlConnection(connectionString); 
      con2.Open(); 
      string query = "SELECT * FROM dbo.Carimed"; 
      SqlCommand cmd2 = new SqlCommand(query, con2); 

      SqlDataReader dr2 = cmd2.ExecuteReader(); 
      while (dr2.Read()) 
      { 
       string cari_des = dr2.GetString(dr2.GetOrdinal("Item_Description")); 
       comboBox3.Items.Add(cari_des); 
       comboBox3.Text.Trim(); 
      } 

     } 
     catch (Exception ex) 
     { 

      MessageBox.Show(ex.ToString()); 
     } 

    } 

它做一切需要做的是在一個字母打字的時候它開始向下篩選降因此。接下來我想根據輸入的任何值來過濾下拉框。如果一個單詞是說"16 cat123"通常用戶將不得不開始輸入數字"16"或數字"1"爲它顯示結果。相反,如果用戶應該通過輸入"cat123"開始,那麼它仍會顯示原始項目"16 cat123"。我怎樣才能做到這一點?這可以通過我的SELECT查詢中類似的操作符來完成嗎?

+0

您應該配置SqlConnection,SqlCommand和SqlDataReader對象。要麼明確地使用'.Close()'或者'使用(...'語句。 – stuartd

+0

是的,這是我的代碼中的過度視線,現在就完成了@stuartd – Jevon

+0

如果你有使用實體框架的選擇,它會讓你的生活更容易 – Sam07

回答

0

SELECT查詢中你可以要求它這樣的:

SqlCommand cmd2 = new SqlCommand(query, con2); 
string query = "SELECT * FROM dbo.Carimed WHERE Item_Description LIKE '%@TEXT%'"; 
cmd2.Parameters.Add("@TEXT", SqlDbType.NVARCHAR).Value = comboBox3.Text; 
SqlDataReader dr2 = cmd2.ExecuteReader(); 

這應該過濾你的查詢,選擇包含鍵入的文本的話。 This link可能會幫助你。

+0

謝謝但仍然不起作用 – Jevon