2017-10-12 21 views
0

TextBoxコレクションでは、 "01-carrot"のようなデータが入っているデータベーステーブルからデータを読み込みます。テキストボックスにはAutoCompleModeが設定されています。しかし、関連するコレクションを表示する '01'と入力しても、コレクションに表示されていない 'C'を入力した場合は、コレクションを表示しないでください。C#、Visual Studio 2008

Load_pageイベントでこれをコードしようとしたところ、enter code hereがロードされました。

AutoCompleteStringCollection MyCollection; 
private void clubitem_no() 
{ 
    try 
    { 
     // string a = txtitem.Text + "%"; 
     // DataTable allnames = new DataTable(); 
     // MySqlCommand cmdauto = new MySqlCommand("SELECT CONCAT(product_id,'-',product_name)AS product_name FROM product_details WHERE product_id LIKE '"+ a + "' OR product_name LIKE '" + a + "'", conn); 
     MySqlCommand cmdauto = new MySqlCommand("SELECT CONCAT(product_id,'-',product_name)AS product_name FROM product_details ", conn); 
     conn.Open(); 
     MySqlDataReader newdr = cmdauto.ExecuteReader(); 
     MyCollection = new AutoCompleteStringCollection(); 
     while (newdr.Read()) 
     { 
      string b = newdr.GetString(0); 
      MyCollection.Add(newdr.GetString(0)); 

     } 
     // txtitem.AutoCompleteCustomSource = MyCollection; 
     txtitem.AutoCompleteMode = AutoCompleteMode.Suggest; 
     txtitem.AutoCompleteSource = AutoCompleteSource.CustomSource; 
     // AutoCompleteStringCollection DataCollection = new AutoCompleteStringCollection(); 
     txtitem.AutoCompleteCustomSource = MyCollection; 
     newdr.Close(); 
     conn.Close(); 
    } 
    catch (MySqlException ex) 
    { 
     MessageBox.Show(ex.ToString()); 
     conn.Close(); 
    } 
} 
+0

標準オートコンプリートはテキストのみの先頭から検索します。テキストの途中で検索が必要な場合は、ロジックのオートコンプリートを記述するか、サードパーティのコンポーネントを使用する必要があります。 –

答えて

0

%like likeを使用してください。 例:

SELECT CONCAT(product_id,'-',product_name)AS product_name FROM product_details WHERE product_id LIKE '%"+ a + "%' OR product_name LIKE '%" + a + "%'" 

Check here for more details

+0

私もこのようにしてみましたが、すべてのデータをコレクションにロードしていますが、アルファベットを借りて検索しているときだけです。 –

+0

特定の機能を探したい場合は、さらに文字を書く必要があります。たとえば:carot - >%car%の場合、carを持つすべてのデータが検索されます。 –

+0

sqlをビルドするときに文字列連結を使用しないようにアドバイスします。代わりにパラメータを使用します。 var sql = "SELECT CONCAT(product_id、 ' - '、product_name)ASプロダクト名FROM product_details WHERE product_id LIKE @search OR product_name LIKE @search"; var search = string.format( "%{0}%"、a); cmdauto.parameters.add(新しいMySqlParameter( "search"、search)); –

関連する問題