Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 搜索的数据未加载到asp.net表单中的数据网格视图?_C#_Mysql_Asp.net_Search_Datagridview - Fatal编程技术网

C# 搜索的数据未加载到asp.net表单中的数据网格视图?

C# 搜索的数据未加载到asp.net表单中的数据网格视图?,c#,mysql,asp.net,search,datagridview,C#,Mysql,Asp.net,Search,Datagridview,当我单击“搜索”时,它将按表上的名称进行搜索。(参见图1) 我的搜索代码 protected void srchbtn_Click(object sender, EventArgs e) { try { if (string.IsNullOrWhiteSpace(this.TextBox1.Text)) { Response.Write("<script>

当我单击“搜索”时,它将按表上的名称进行搜索。(参见图1)

我的搜索代码

protected void srchbtn_Click(object sender, EventArgs e)
    {
        try
        {
            if (string.IsNullOrWhiteSpace(this.TextBox1.Text))
            {
                Response.Write("<script>alert('Search name is empty!')</script>");
               
            }
            else
            {

                con.Open();
                adapt = new SqlDataAdapter("select Convert(nvarchar(10),Date,121) as Date,Department,KaizenLead,Type,Observation,Onetimereapeat,Typeofwaste,Rootcase,ImageBefore,ImageAfter,Before,After,Improvement,Savings,Impleteam,validateby,Rootcase,safetyadmin,convert(nvarchar(10),Implementationdate,121) as Implementationdate,Status,Reason,FinanceRef  from GembaKaizen where KaizenLead like '" + TextBox1.Text + "'", con);
                dt = new DataTable();
                adapt.Fill(dt);
                gv_case.DataSource = dt;//gv_gase-grid view name
                con.Close();

                
            }
           
        }
        catch(SqlException)
        {
            Response.Write("<script>alert('Database error!')</script>");
        }
    }
protectedvoid srchbtn\u单击(对象发送方,事件参数e)
{
尝试
{
if(string.IsNullOrWhiteSpace(this.TextBox1.Text))
{
Write(“警报('搜索名称为空!'));
}
其他的
{
con.Open();
adapt=new SqlDataAdapter(“选择Convert(nvarchar(10),Date,121)作为日期、部门、KaizenLead、类型、观察、一次性重复、废物类型、Rootcase、ImageBefore、ImageAfter、Before、After、改良、节约、Impleteam、validateby、Rootcase、safetyadmin、Convert(nvarchar(10),实现日期,121))作为GembaKaizen的实施日期、状态、原因、资金来源,KaizenLead如“+TextBox1.Text+”,con);
dt=新数据表();
适应。填充(dt);
gv_case.DataSource=dt;//gv_gase-grid视图名称
con.Close();
}
}
捕获(SqlException)
{
Write(“警报('Database error!'));
}
}

我不确定我是否理解这个问题,但我发现您的代码存在两个问题:

  • sql查询中的like子句需要
    %
    ,否则它就是相等的
  • Sql注入 始终在查询中添加用户输入作为参数,否则很容易出现sql注入

  • 我找到了答案:)您的问题是您将datatable声明为datatable()-这意味着一个数据表数组,这将不起作用。但是dataset()已经是一个表数组。同样,它应该声明为dataSet,而不是dataSet()。当您处理一个查询时,我会返回到声明一个数据表,如果您编写代码,那么您就不需要(或想要)表限定符,例如ds.tables(0).Rows,并且您可以使用ds.Rows,这会更清楚、更好。因此,在墙上乱涂乱画,随意地从datatable更改为dataset()数组是可行的,最好是在代码中明确并使用datatable
                        con.Open();
                        adapt = new SqlDataAdapter("select Convert(nvarchar(10),Date,121) as Date,Department,KaizenLead,Type,Observation,Onetimereapeat,Typeofwaste,Rootcase,ImageBefore,ImageAfter,Before,After,Improvement,Savings,Impleteam,validateby,Rootcase,safetyadmin,convert(nvarchar(10),Implementationdate,121) as Implementationdate,Status,Reason,FinanceRef  from GembaKaizen where KaizenLead like '" + TextBox1.Text + "'", con);
                        DataSet ds = new DataSet();
                        adapt.Fill(ds);
                        gv_case.DataSource = ds;
                        gv_case.DataBind();
                        con.Close();
    
    like '%" + TextBox1.Text + "%'"