如图,下拉框都是相同的,有三个选项:单位工程,移交单位,移交人分别对应数据库中的Name,Yjdw,Yjr字段,该如何实现3个3个textbox中填了几个就实现现几个条件的查询(同时满足下拉框选择的)。单纯的if肯定是会非常麻烦的,求个简便点的方法,谢谢!

解决方案 »

  1.   


    string strsql = "select * from tbName where 1=1";
    if(txtBox1.Text!="")   strsql+= " and Name='"+txtBox1.Text+"'";
    if(txtBox2.Text!="")   strsql+= " and Yhdw='"+txtBox2.Text+"'";
    if(txtBox3.Text!="")   strsql+= " and Yjr='"+txtBox3.Text+"'";
      

  2.   

    就是 if 判断
    stringBuilder 拼接 条件 字符串
      

  3.   

    这样好像是不行的,假如我的三个下拉框都是选的单位工程那SQL的条件肯定就行不能了。我是要根据下拉框的条件对这个条件进行模糊查询,Soryy,开始没说清楚!
      

  4.   

     string sql = "select * from MorningGroup";
                if (!String.IsNullOrEmpty(where))
                {
                    sql += " where " + where;
                }
    if(txtBox1.Text!="")   strsql+= " and Name='"+txtBox1.Text+"'";
    if(txtBox2.Text!="")   strsql+= " and Yhdw='"+txtBox2.Text+"'";
    if(txtBox3.Text!="")   strsql+= " and Yjr='"+txtBox3.Text+"'";
      

  5.   

    模糊查询改成 " and Name like '" +txtBox1.Text+ "%'" 就可以了。
    1=1 是一个永真的表达式,这么写是为了确保where已经在字符串内,不会重复添加。不然要进行3个条件的查询时,就会出现3个where了。 
      

  6.   

    条件查询偶最近研究了不少,上面所说虽然靠近,但还不是答案。他们只注意到了where条件句等号后面是变量,没注意等号前面也是变量。你在做查询语句拼接的时候也让等号前面的值等于dropdownlist.selectedvalue就可以了。上面所说的拼接方法是切实可行的七楼已经补充得好了,不过也许你还不知道where 1=1的意义何在:如果if语句三个都不符合,那选择语句就没有where语句,如果有符合,那就有,为了让where语句总是有且无语法错误,就需要1=1.
      

  7.   

    还可以这样string strsql= "select * from MorningGroup where 1=1 ";
    strsql += (txtBox1.Text==""?"": " and Name like '%"+txtBox1.Text+"%'");
    strsql += (txtBox2.Text==""?"": " and Yhdw like '%"+txtBox2.Text+"%'");
    strsql += (txtBox3.Text==""?"": " and Yjr like '%"+txtBox3.Text+"%'");
      

  8.   

    首先要判断下拉框选择项,然后根据选择象和文本框的值来进行组装sql
      

  9.   

    感谢各位的回答,我已经自己解决了,方法也贴上来,就是自己写一个方法,判断下拉框的内容,再拼接SQLpublic static String selected(string ddl_text,string text)
        {
            if (ddl_text == "单位工程")
            {
                return " and Project_Name like '%" + text + "%'";
            }
            if (ddl_text == "移交单位")
            {
                return " and Project_Yjdw like '%" + text + "%'";
            }
            if (ddl_text == "移交人")
            {
                return " and Project_Yjr like '%" + text + "%'";
            }
            return text;
        }调用方法
    string sql = "select Project_Name from UDP_Project where 1=1";
                sql += SQLHelper.selected(ddl_ProName.Text, txt_Key.Text);
                sql += SQLHelper.selected(ddl_ProName2.Text, txt_Key2.Text);
                sql += SQLHelper.selected(ddl_ProName3.Text, txt_Key3.Text);