2011-12-28 3 views
0

'검색'텍스트 상자가 있습니다. 사용자가 텍스트를 입력하면 dataGridView를 자동으로 채 웁니다. 그러나 txtSearch.Text는 항상 ""을 표시합니다. 어떻게 해결할 수 있습니까?텍스트 상자가 자동으로 검색됩니다.

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

매우 이상한

는 코드입니다. 당신은 명확한 환경에서 시도 할 수 있습니까? 텍스트를 변경하고 이벤트를 실행해도 괜찮습니까? – Elastep

+0

이제 텍스트가 변경되었습니다. 하지만 항상 else 블록을 버립니다. 나는 이것이 틀렸다는 생각이다. OleDbCommand cmd = 새 OleDbCommand ("Select * FROM 학생 WHERE [이름] '% @ 이름 %'", cn); – ozkank

답변

1

넣어 유쾌한 캐릭터 :

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