代码没有显示任何错误,但仍然没有在webform的数据网格上显示数据。

时间:2014-11-26 04:56:28

标签: c#

我想根据用户想要的搜索类型显示数据源中的数据,并且没有在代码中出现任何错误。我的数据网格的名称是" Employee_Details",建议我哪里错了?

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();
            }
        }


    }

3 个答案:

答案 0 :(得分:0)

你忘了绑定网格方法.......

       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

答案 1 :(得分:0)

使用SqlDataAdapterSqlDataReader这两种方法都不同,请检查this。除了你这个forgor DataBind方法。

如果您使用SqlDataAdapter更改代码,请执行以下操作: -

SqlDataAdapter da= new SqlDataAdapter("SELECT * FROM Emp_Details WHERE Name=@Name, 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攻击。

答案 2 :(得分:0)

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