protected void Button1_Click(object sender, EventArgs e)
    {
        string settings = Convert.ToString(ConfigurationManager.ConnectionStrings["SqlConn"]);
        SqlConnection myconn = new SqlConnection(settings);
        string Staff_Name = Request["TextBox1"];
        string Due_Time = Request["DropDownList1"];
        string Staff_Number = Request["DropDownList2"];
        myconn.Open();        string mysql = "select StaffNumber,StaffName,DueTime form StaffContract where 1=1"; 
 
        if(Staff_Name != null) 
        { 
            if(Due_Time == null) 
            { 
                if(Staff_Number == null) 
                { 
                    mysql += "and StaffName like '% ' + Staff_Name + '% ' "; 
                    Response.Write( "1 "); 
                }
                else if(Staff_Number != null)
                {
                    mysql += "and(StaffName like '% ' + Staff_Name + '% ') and (Staff_Number = StaffNumber) ";
                    Response.Write("2 ");
                }
            }
            else if(Due_Time != null)
            {
                if(Staff_Number == null)
                {
                    mysql += "and(StaffName like '% ' +Staff_Name + '% ') and (DueTime =Due_Time) ";
                    Response.Write("3 ");
                }
                else if(Staff_Number != null)
                {
                    mysql += "and(StaffName like '% '+ Staff_Name + '% ') and (DueTime = Due_Time) and (StaffNumber = Staff_Number) ";
                    Response.Write("4 ");
                }
            }
        }
        if(Due_Time != null)
        {
            if (Staff_Name == null)
            {
                if(Staff_Number == null)
                {
                    mysql += "and DueTime like '% ' + Due_Time + '% '";
                    Response.Write("5 ");
                }
                else if(Staff_Number != null)
                {
                    mysql += "and(DueTime like '% ' + Due_Time + '% ') and (Staff_Number = StaffNumber) ";
                    Response.Write("6 ");
                }
            }
        }
        if(Staff_Number != null)
        {
            if(Staff_Name == null) 
            { 
                if(Due_Time == null) 
                { 
                    mysql += "and StaffNumber like '% ' + Staff_Number + '% '";
                    Response.Write("7 ");
                }
            }
        }        SqlCommand com = new SqlCommand(mysql, myconn); 
        SqlDataReader   result = com.ExecuteReader(CommandBehavior.CloseConnection); 
        GridView1.DataSource = result; 
        GridView1.DataBind();      
        myconn.Close();
    }

解决方案 »

  1.   

     '% ' + Staff_Name + '% '应该是'% " + Staff_Name + "% '
      

  2.   

    SqlDataReader   result = com.ExecuteReader(CommandBehavior.CloseConnection);  这句报错,说'StaffContract' 附近有语法错误。用户代码未处理SqlException
      

  3.   


        protected void Button1_Click(object sender, EventArgs e) 
        { 
            string settings = Convert.ToString(ConfigurationManager.ConnectionStrings["SqlConn"]); 
            SqlConnection myconn = new SqlConnection(settings); 
            string Staff_Name = Request["TextBox1"]; 
            string Due_Time = Request["DropDownList1"]; 
            string Staff_Number = Request["DropDownList2"]; 
            myconn.Open();         string mysql = "select StaffNumber,StaffName,DueTime form StaffContract where 1=1";  
      
            if(Staff_Name != null)  
            {  
                if(Due_Time == null)  
                {  
                    if(Staff_Number == null)  
                    {  
                        mysql += "and StaffName like '%" + Staff_Name + "%'";  
                        Response.Write( "1 ");  
                    } 
                    else if(Staff_Number != null) 
                    { 
                        mysql += "and(StaffName like '%" + Staff_Name + "%') and (Staff_Number = StaffNumber) "; 
                        Response.Write("2 "); 
                    } 
                } 
                else if(Due_Time != null) 
                { 
                    if(Staff_Number == null) 
                    { 
                        mysql += "and(StaffName like '%" +Staff_Name + "%') and (DueTime =Due_Time) "; 
                        Response.Write("3 "); 
                    } 
                    else if(Staff_Number != null) 
                    { 
                        mysql += "and(StaffName like '%" + Staff_Name + "%') and (DueTime = Due_Time) and (StaffNumber = Staff_Number) "; 
                        Response.Write("4 "); 
                    } 
                } 
            } 
            if(Due_Time != null) 
            { 
                if (Staff_Name == null) 
                { 
                    if(Staff_Number == null) 
                    { 
                        mysql += "and DueTime like '%" + Due_Time + "%'"; 
                        Response.Write("5 "); 
                    } 
                    else if(Staff_Number != null) 
                    { 
                        mysql += "and(DueTime like '%" + Due_Time + "%') and (Staff_Number = StaffNumber) "; 
                        Response.Write("6 "); 
                    } 
                } 
            } 
            if(Staff_Number != null) 
            { 
                if(Staff_Name == null)  
                {  
                    if(Due_Time == null)  
                    {  
                        mysql += "and StaffNumber like '%" + Staff_Number + "%'"; 
                        Response.Write("7 "); 
                    } 
                } 
            }         SqlCommand com = new SqlCommand(mysql, myconn);  
            SqlDataReader   result = com.ExecuteReader(CommandBehavior.CloseConnection);  
            GridView1.DataSource = result;  
            GridView1.DataBind();       
            myconn.Close(); 
        }
      

  4.   

    這種情況﹐用單步調試出sql 語句﹐然后到查詢分析器中執行一下﹐
    什么都清楚了~~~~
      

  5.   

    and(StaffName like '% ' + Staff_Name + '% ')这种的写成and (StaffName like '% ' + Staff_Name + '% ')
    你报什么错?
      

  6.   

    string mysql = "select StaffNumber,StaffName,DueTime form StaffContract where 1=1";  
    string mysql = "select StaffNumber,StaffName,DueTime from StaffContract where 1=1 ";  
      

  7.   

    每句的and前面都加上一个空格!
      

  8.   

    form改为from, where 1=1后面加个空格 
      

  9.   

    我改了,异常被我用try抛出来,很奇怪,网页左上角不管我怎么查,出来一个4
      

  10.   

    StaffNumber保存类型是varchar
    Staff_Name也是
    Due_Time保存类型是datetime
      

  11.   

    现在的错误是列名Staff_Name,Staff_Number,Due_Time无效,把try去掉后
      

  12.   

    你到底是列名无效还是字符串无效啊?
    列名无效是你的表里面没有这几个字段
    字符串无效是你没取道request的值
      

  13.   

     string Staff_Name = TextBox1.Text.ToString();
            string Due_Time = DropDownList1.SelectedValue.ToString();
            string Staff_Number = DropDownList1.SelectedValue.ToString();
      

  14.   

     string Staff_Name = TextBox1.Text.ToString(); 
            string Due_Time = DropDownList1.SelectedValue.ToString(); 
            string Staff_Number = DropDownList2.SelectedValue.ToString();
    写错了,不好意思
      

  15.   

    我用TextBox单独查了的,后面绑了DropDownList控件组合查,结果就这样了
      

  16.   

    if(Staff_Name != null)  
            {  
                 
                   
                        mysql += "and StaffName like '% ' + Staff_Name + '% ' ";  
                        Response.Write( "1 "); } 
     else if(Due_Time != null) 
                { 
                   
                        mysql += "and Due_Time like '% ' + Due_Time + '% '  "; 
                        Response.Write("3 "); 
                    } 
    else if(Staff_Number != null){ 
                     mysql += "and Staff_Number like '% '+ Staff_Number + '% '"; 
                        Response.Write("4 "); 
                    } 
     改成这样,你的sql语句错了!
      

  17.   

    string Staff_Name = TextBox1.Text.ToString(); 
            string Due_Time = DropDownList1.SelectedValue.ToString(); 
            string Staff_Number = DropDownList1.SelectedValue.ToString();
    string settings = Convert.ToString(ConfigurationManager.ConnectionStrings["SqlConn"]); 
            SqlConnection myconn = new SqlConnection(settings); 
            myconn.Open();         string mysql = "select StaffNumber,StaffName,DueTime form StaffContract where 1=1";  
    if(Staff_Name != null)   
            {   
                  
                    
                        mysql += "and StaffName like '% " + Staff_Name + "% ' ";   
                        Response.Write( "1 "); }  
    else if(Due_Time != null)  
                {  
                    
                        mysql += "and DueTime like '% " + Due_Time + "% '  ";  
                        Response.Write("3 ");  
                    }  
    else if(Staff_Number != null){  
                     mysql += "and StaffNumber like '% "+ Staff_Number + "% '";  
                        Response.Write("4 ");  
                    }  
    SqlCommand com = new SqlCommand(mysql, myconn);  
            SqlDataReader   result = com.ExecuteReader(CommandBehavior.CloseConnection);  
            GridView1.DataSource = result;  
            GridView1.DataBind();       
            myconn.Close(); 
      

  18.   

    using System;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string settings = Convert.ToString(ConfigurationManager.ConnectionStrings["SqlConn"]);
                SqlConnection myconn = new SqlConnection(settings);
                myconn.Open();            SqlDataAdapter da = new SqlDataAdapter("select * from StaffContract",myconn);
                DataSet ds = new DataSet();
                da.Fill(ds);            string strsql = "select * from StaffContract";
                SqlCommand cm = new SqlCommand(strsql, myconn);
                SqlDataReader dr = cm.ExecuteReader();
                while (dr.Read())
                {
                    DropDownList1.Items.Add(new ListItem(dr["StaffNumber"].ToString()));
                    DropDownList2.Items.Add(new ListItem(dr["DueTime"].ToString()));
                }            GridView1.DataSource = ds.Tables[0].DefaultView;
                GridView1.DataBind();
                myconn.Close();
            }
        }    protected void Button1_Click(object sender, EventArgs e)
        {
            string settings = Convert.ToString(ConfigurationManager.ConnectionStrings["SqlConn"]);
            SqlConnection myconn = new SqlConnection(settings);
            string Staff_Name = TextBox1.Text.ToString();
            string Due_Time = DropDownList1.SelectedValue.ToString();
            string Staff_Number = DropDownList1.SelectedValue.ToString();        myconn.Open();        string mysql = "select StaffNumber,StaffName,DueTime from StaffContract where 1=1";        if (Staff_Name != null)
            {
                mysql += "and StaffName like '% " + Staff_Name + "% ' ";
                Response.Write("1 ");
            }
            else if (Due_Time != null)
            {            mysql += "and DueTime like '% " + Due_Time + "% '  ";
                Response.Write("3 ");
            }
            else if (Staff_Number != null)
            {
                mysql += "and StaffNumber like '% " + Staff_Number + "% '";
                Response.Write("4 ");
            }
            SqlCommand com = new SqlCommand(mysql, myconn);
            SqlDataReader result = com.ExecuteReader(CommandBehavior.CloseConnection);
            GridView1.DataSource = result;
            GridView1.DataBind();        myconn.Close();
        }    protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
        {
            for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
            {
                CheckBox chk = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
                    if(CheckBox2.Checked == true)
                    {
                        chk.Checked = true;
                    }
                    else
                    {
                        chk.Checked = false;
                    }
            }
        }    protected void GridView1_PageIndexChanged(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            string settings = Convert.ToString(ConfigurationManager.ConnectionStrings["SqlConn"]);
            SqlConnection myconn = new SqlConnection(settings);
            myconn.Open();
            SqlDataAdapter db = new SqlDataAdapter("select * from StaffContract", myconn);
            DataSet dc = new DataSet();
            db.Fill(dc);
            GridView1.DataSource = dc.Tables[0].DefaultView;
            GridView1.DataBind();
            myconn.Close();
        }
    }
      

  19.   

    哎,吃了饭上来继续,谢谢你了jingzhao1985
      

  20.   

    下拉列表的数据填充用这个呢?
     for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                { 
                    DropDownList1.Items.Add(ds.Tables[0].Rows["StaffNumber"].ToString());
                    DropDownList2.Items.Add(ds.Tables[0].Rows["DueTime"].ToString());
                }
      

  21.   

    GridView1.DataSource = ds.Tables[0];
    这个也改 
      

  22.   

    SQL语句连接的时候注意中间的空格,你把下面的代码完全COPY把你的代码覆盖,试试
    protected void Button1_Click(object sender, EventArgs e) 
        { 
            string settings = Convert.ToString(ConfigurationManager.ConnectionStrings["SqlConn"]); 
            SqlConnection myconn = new SqlConnection(settings); 
            string Staff_Name = Request["TextBox1"]; 
            string Due_Time = Request["DropDownList1"]; 
            string Staff_Number = Request["DropDownList2"]; 
            myconn.Open();         string mysql = "select StaffNumber,StaffName,DueTime form StaffContract where 1=1 ";  //这里最后加个空格,像我用这种方式连接SQL语句的时候,在最后留空,在最前一般也留空,看下面余下的代码
      
            if(Staff_Name != null)  
            {  
                if(Due_Time == null)  
                {  
                    if(Staff_Number == null)  
                    {  
                        mysql += " and StaffName like '%" + Staff_Name + "%' ";//你这里%号前后不需要空格的  
                        Response.Write( "1 ");  
                    } 
                    else //这里不需要用else if了,画蛇添足
                    { 
                        mysql += " and (StaffName like '%" + Staff_Name + "%') and (Staff_Number = "+Staff_Number+") "; //Staff_Number是变量,你那放到里面去就是一个恒等式了
                        Response.Write("2 "); 
                    } 
                } 
                else //这里也没有必要用else if
                { 
                    if(Staff_Number == null) 
                    { 
                        mysql += " and (StaffName like '%" +Staff_Name + "%') and (DueTime ="+Due_Time+") "; //若是日期型的话得改改方式
                        Response.Write("3 "); 
                    } 
                    else //无需else if
                    { 
                        mysql += " and (StaffName like '%"+ Staff_Name + "%') and (DueTime = "+Due_Time+") and (StaffNumber = "+Staff_Number+") "; //多看我改的(你的and前后都没空格)
                        Response.Write("4 "); 
                    } 
                } 
            } 
            if(Due_Time != null) 
            { 
                if (Staff_Name == null) 
                { 
                    if(Staff_Number == null) 
                    { 
                        mysql += " and DueTime like '%" + Due_Time + "%' "; 
                        Response.Write("5 "); 
                    } 
                    else //多余
                    { 
                        mysql += " and (DueTime like '%" + Due_Time + "%') and (Staff_Number = "+StaffNumber+") "; //空格、like问题,若DueTime是日期型的话,那样写不行的
                        Response.Write("6 "); 
                    } 
                } 
            } 
            if(Staff_Number != null) 
            { 
                if(Staff_Name == null)  
                {  
                    if(Due_Time == null)  
                    {  
                        mysql += " and StaffNumber like '%" + Staff_Number + "%' "; 
                        Response.Write("7 "); 
                    } 
                } 
            }         SqlCommand com = new SqlCommand(mysql, myconn);  
            //SqlDataReader   result = com.ExecuteReader(); //这里有问题
             DataTable dt = new DataTable("tb");
            SqlDataAdapter sd = new SqlDataAdapter(cmd);
            sd.Fill(dt);
            //GridView1.DataSource = result;//要绑定数据的话,要用DataTable或DataSet
            GridView1.DataSource=dt;
            GridView1.DataBind();       
            myconn.Close(); 
        }
    说实话,你的分数好少你的if语句用的太差劲了,逻辑复杂,看的人晕,我只帮你修改了你的语法方面,逻辑方面你自己再想办法改改,不能用这种方式
      

  23.   

    忘了提醒:form 改成 from
      

  24.   

    谢谢my22xo ,但还是有问题
    System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) 在 _Default.Button1_Click(Object sender, EventArgs e)