2014-11-26 1 views
1

Я хочу рассказать данные из источника данных в зависимости от типа поиска, которого хочет пользователь, и я не получаю никакой ошибки в коде. Имя моей сетки данных «Employee_Details», подскажите мне, где я ошибаюсь?Код не показывает никаких ошибок, но все еще не отображает данные на datagrid веб-формы.?

protected void btn_Search_Click(object sender, EventArgs e) 
    { 
     string search = list_Search.Text; 
     string constr = ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString; 
     SqlConnection myconnection = new SqlConnection(constr); 
     if(string.Compare(search,"Search By Name",true)==0) 
     { 
      try 
      { 
       myconnection.Open(); 
       SqlDataReader myReader = null; 
       SqlCommand myCommand = new SqlCommand("SELECT * FROM Emp_Details WHERE Name='" + txt_Name.Text + "'", myconnection); 
       myReader = myCommand.ExecuteReader(); 

       SqlDataAdapter da = new SqlDataAdapter(myCommand); 
       DataTable dt = new DataTable(); 

       //da.Fill(dt); 
       //DataGrid ds = new DataGrid(); 
       //Employee_Details.DataSource = dt; 

       while (myReader.Read()) 
       { 
        da.Fill(dt); 
        Employee_Details.DataSource = dt; 
       } 
      } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 
      finally 
      { 
       myconnection.Close(); 
      } 
     } 


    } 
+0

DataBind из сетки пропущен, также удаляется источник данных из цикла while! – mybirthname

ответ

0

Вы Забыли Bind Method Сетки .......

 myconnection.Open(); 
      SqlDataReader myReader = null; 
      SqlCommand myCommand = new SqlCommand("SELECT * FROM Emp_Details WHERE 

      Name='" + txt_Name.Text + "'", myconnection); 
    myReader = myCommand.ExecuteReader(); // it Doesn't Required 
    SqlDataAdapter sda = new SqlDataAdapter(); 
    sda.SelectCommand=myCommand ; 
    sda.Fill(dt); 
    Employee_Details.DataSource = dt; 
    Employee_Details.DataBind(); // You Forgot This thing 
+0

thnks это хорошо работает :) – Sarthak

+0

Ваше приветствие Наслаждайтесь кодированием ... :) – Dhaval

0

Используйте либо SqlDataAdapter или SqlDataReader оба они отличаются подход, Check this. Кроме этого вы forgor DataBind метод.

Если вы используете SqlDataAdapter изменить код, как это: -

SqlDataAdapter da= new SqlDataAdapter("SELECT * FROM Emp_Details WHERE [email protected], myconnection); 
da.SelectCommand.Parameters.Add("@Name",SqlDbType.VarChar).Value = txt_Name.Text; //Change Data Type accordingly 
da.Fill(dt); 
Employee_Details.DataSource = dt; 
Employee_Details.DataBind(); 

Пожалуйста, удалите весь код, связанный с SqlDataReader.

Также, пожалуйста, используйте using, чтобы распорядиться своими дорогостоящими ресурсами. Рассмотрите возможность использования SqlParameter, чтобы остановить атаки Sql Injection.

0
  while (myReader.Read()) 
      { 
       da.Fill(dt); 
       Employee_Details.DataSource = dt; 
       Employee_Details.DataBind(); 
      }