2011-12-28 2 views
0

У меня есть текстовое поле поиска. Когда пользователь вводит текст, я хочу автоматически заполнить dataGridView. Но txtSearch.Text всегда показывает "". Как я могу это решить?textBox автоматически поиск

Если в txtSearch нет текста, dataGridView должен отображать все данные.

Это код:

private void txtSearch_TextChanged(object sender, EventArgs e) 
{ 
    //grid.Rows.Clear(); 
    OleDbDataReader dr = default(OleDbDataReader); 
    using (OleDbConnection cn = new OleDbConnection(
       "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" 
       + Application.StartupPath + "\\MyAcsessDb.accdb")) 
    { 
     cn.Open(); 
     OleDbCommand cmd = new OleDbCommand(
      "Select * FROM Student WHERE [Name] Like '%@Name%' ", cn); 

     cmd.Parameters.Add("@Name", OleDbType.Char).Value = txtSearch.Text; 

     dr = cmd.ExecuteReader(); 

     if (dr.HasRows == true) 
     { 
      while (dr.Read()) 
      { 
       grid.Rows.Add(dr[0].ToString(), 
           dr[1].ToString(), 
           dr[2].ToString(), 
           dr[3].ToString()); 
      } 
     } 
     else 
     { 
      MessageBox.Show("No Data!"); 
     } 
    } 
} 
+0

Очень странно. Можете ли вы попробовать ясный env? Все в порядке с изменением текста и стрельбой? – Elastep

+0

сейчас, текст изменен. но он всегда отбрасывает блок else. Я думаю, это неправильно. OleDbCommand cmd = new OleDbCommand («Выбрать * FROM Student WHERE [Имя] Как«% @ Name% », cn); – ozkank

ответ

1

Помещенный веселые персонажи вне параметра:

cmd.Parameters.Add("@Name", OleDbType.Char).Value = "%" + txtSearch.Text + "%";