做了个按条件查询,输入条件可以查询出结果,但是把条件清空了,在查询应该是全部查询了,可还是按之前那个条件查的结果,想问下按条件查完,怎么在全部查,下面是我的代码if (ddlist.SelectedValue != "")
        { 
            sSql = " p_product = '" + this.ddlist.SelectedValue + "'";
        }        if (txtname.Text.Trim() != "")
        {
            sSql = " p_name like '%" + txtname.Text.Trim() + "%'";
        }        if (this.txtStart.Text.Trim() != "")
        {
            if (this.txtEnd.Text.Trim() != "")
            {
                sSql = " (convert(varchar(32),addtime,120) >= '" + Convert.ToDateTime(this.txtStart.Text.Trim()).ToString("yyyy-MM-dd") + "' and convert(varchar(32),addtime,120)<='" + Convert.ToDateTime(this.txtEnd.Text.Trim()).ToString("yyyy-MM-dd") + "')";
            }
            else
            {
                sSql = " convert(varchar(32),addtime,120) like '%" + Convert.ToDateTime(this.txtStart.Text.Trim()).ToString("yyyy-MM-dd") + "%'";
            }
        }
        else
        {
            if (this.txtEnd.Text.Trim() != "")
            {
                sSql = " convert(varchar(32),addtime,120) like '%" + Convert.ToDateTime(this.txtEnd.Text.Trim()).ToString("yyyy-MM-dd") + "%'";
            }
        }        if (ddlist.SelectedValue != "" && txtname.Text.Trim() != "" && txtStart.Text.Trim() != "" && txtEnd.Text.Trim() != "")
        {
            sSql = " p_product = '" + this.ddlist.SelectedValue + "' and p_name like '%" + txtname.Text.Trim() + "%' and (convert(varchar(32),addtime,120) >= '" + Convert.ToDateTime(this.txtStart.Text.Trim()).ToString("yyyy-MM-dd") + "' and convert(varchar(32),addtime,120)<='" + Convert.ToDateTime(this.txtEnd.Text.Trim()).ToString("yyyy-MM-dd") + "')";
        }        //我在这里做了的全部查询,当全都等于空值的时候
        if (ddlist.SelectedValue == "请选择" || txtname.Text.Trim() == "" || txtStart.Text.Trim() == "" || txtEnd.Text.Trim() == "")
        {
            this.repeater.DataSource = proBLL.GetALLList();//这个方法是全部查
            this.repeater.DataBind();
        }        this.repeater.DataSource = proBLL.GetList(sSql);//这个方法是按条件查
        this.repeater.DataBind();
        public DataTable GetList(string strWhere)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("select id,p_name,p_version,p_product,p_detial,p_fid,addtime ");
            strSql.Append(" FROM Product");
            if (strWhere.Trim() != "")
            {
                strSql.Append(" where " + strWhere);
            }
            return SqlHelp.ExecuteFill(strSql.ToString());
        }        public DataTable GetALLList()
        {
            return GetList("");
        }

解决方案 »

  1.   

    你调试下,当所有条件为空的时候SQL的值是不是还是以前的值的。。
    如果不需要判断,或者直接在代码上加个else,因为如果你判断都为空了就执行proBLL.GetALLList()这个方法,这个判断过后,下面还是会执行proBLL.GetList(sSql)啊if (ddlist.SelectedValue == "请选择" || txtname.Text.Trim() == "" || txtStart.Text.Trim() == "" || txtEnd.Text.Trim() == "")
            {
                this.repeater.DataSource = proBLL.GetALLList();//这个方法是全部查
                this.repeater.DataBind();
            }
    else
    [
            this.repeater.DataSource = proBLL.GetList(sSql);//这个方法是按条件查
            this.repeater.DataBind();
    }
      

  2.   

     public DataTable GetAllProject(string projID,string projname,string dep,string projmanager)
        {
            string database = System.Configuration.ConfigurationManager.AppSettings["key"].ToString();
            SqlDataMapper mapper = new SqlDataMapper("conn");
            string sql = @"select e.employeename,i.proj_id,i.proj_name,i.proj_prop_leader,i.proj_depname,i.proj_info_start_date,i.proj_info_finish_date,t.detail,t.rescoursename 
    from dbo.view_SelEmployee as e 
    join dbo.view_SelProjects as i 
    on e.employeeid=i.proj_prop_leader join SRV_LNK2." + database + ".dbo.tabPrjQueryfields as t on t.detail=i.proj_prop_category where len(i.proj_prop_leader) <> 0";
            if (projID != "" && projID != null)
            {
                sql += " and i.proj_id='" + projID + "'";
            }
          
            if (projname != "" && projname != null)
            {
                sql += " and i.proj_name like '%" + projname + "%'";
            }
            if (dep != "" && dep != null)
            {
                sql += " and t.rescoursename like '%" + dep + "%'";
            }
            if (projmanager != "" && projmanager != null)
            {
                sql += " and e.employeename like '%"+projmanager+"%'";
            }
            DataTable dt = mapper.GetDataSetInfo(sql).Tables[0];
            if (dt != null && dt.Rows.Count > 0)
            {
                return dt;
            }
            return dt;
        }
    我一般的条件 查询
      

  3.   

    你在刚开始就是判断ddlist.SelectedValue == "" 后又是判断ddlist.SelectedValue == "请选择"
     你这思路应该是这样
    string sSql="";
    //然后这是条件判断
    if (ddlist.SelectedValue != "请选择")
            { 
                sSql = " p_product = '" + this.ddlist.SelectedValue + "'";
            }        if (txtname.Text.Trim() != "")
            {
                sSql = " p_name like '%" + txtname.Text.Trim() + "%'";
            }        if (this.txtStart.Text.Trim() != "")
            {
                if (this.txtEnd.Text.Trim() != "")
                {
                    sSql = " (convert(varchar(32),addtime,120) >= '" + Convert.ToDateTime(this.txtStart.Text.Trim()).ToString("yyyy-MM-dd") + "' and convert(varchar(32),addtime,120)<='" + Convert.ToDateTime(this.txtEnd.Text.Trim()).ToString("yyyy-MM-dd") + "')";
                }
                else
                {
                    sSql = " convert(varchar(32),addtime,120) like '%" + Convert.ToDateTime(this.txtStart.Text.Trim()).ToString("yyyy-MM-dd") + "%'";
                }
            }
            else
            {
                if (this.txtEnd.Text.Trim() != "")
                {
                    sSql = " convert(varchar(32),addtime,120) like '%" + Convert.ToDateTime(this.txtEnd.Text.Trim()).ToString("yyyy-MM-dd") + "%'";
                }
            }        if (ddlist.SelectedValue != "" && txtname.Text.Trim() != "" && txtStart.Text.Trim() != "" && txtEnd.Text.Trim() != "")
            {
                sSql = " p_product = '" + this.ddlist.SelectedValue + "' and p_name like '%" + txtname.Text.Trim() + "%' and (convert(varchar(32),addtime,120) >= '" + Convert.ToDateTime(this.txtStart.Text.Trim()).ToString("yyyy-MM-dd") + "' and convert(varchar(32),addtime,120)<='" + Convert.ToDateTime(this.txtEnd.Text.Trim()).ToString("yyyy-MM-dd") + "')";
            }
    //然后再这判断sSql是否为空来执行哪个方法
    DataTable dt = new DataTable();
    if(sSql.Trim().Equals(""))
    {
         dt =proBLL.GetALLList();
    }
    else
    {
         dt =proBLL.GetList(sSql);
    }
          this.repeater.DataSource = dt
          this.repeater.DataBind();
    将这些代码放在你的查询事件里
      

  4.   


    我照你的办法试了下还是不能查出来全部,你看一下我写的那个GetAllList方法获得全部,那么写对吗?就基于那个条件写的
      

  5.   

      //我在这里做了的全部查询,当全都等于空值的时候
            if (ddlist.SelectedValue == "请选择" && txtname.Text.Trim() == "" && txtStart.Text.Trim() == "" && txtEnd.Text.Trim() == "")
            {
                this.repeater.DataSource = proBLL.GetALLList();//这个方法是全部查
                this.repeater.DataBind();
            }        this.repeater.DataSource = proBLL.GetList(sSql);//这个方法是按条件查
            this.repeater.DataBind();
      

  6.   

    //我在这里做了的全部查询,当全都等于空值的时候
      if (ddlist.SelectedValue == "请选择" && txtname.Text.Trim() == "" && txtStart.Text.Trim() == "" && txtEnd.Text.Trim() == "")
      {
      this.repeater.DataSource = proBLL.GetALLList();//这个方法是全部查
      this.repeater.DataBind();
      }else{  this.repeater.DataSource = proBLL.GetList(sSql);//这个方法是按条件查
      this.repeater.DataBind();
    }