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

本文关键字:数据 显示 webform 网格 数据网 错误 任何 代码 | 更新日期: 2023-09-27 18:31:56

我想根据用户想要的搜索类型显示来自数据源的数据,并且在代码中没有收到任何错误。我的数据网格的名称是"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();
            }
        }

    }

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

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

       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
            while (myReader.Read())
            {
                da.Fill(dt);
                Employee_Details.DataSource = dt;
               Employee_Details.DataBind();
            }

使用SqlDataAdapterSqlDataReader它们都是不同的方法,请检查这个。除此之外,您还原谅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 注入攻击。