首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • asp.net中,dropdownlist里面"不限",已实现SQL不限条件搜索?? [已结贴,结贴人:leonjoho]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 20:51:18 楼主
    小弟是初学者,正在设计一个房屋中介网页,其中用户查询符合条件的房屋时有多个条件(地址、面积、楼层等),我用多个DropDownList控件来实现搜索,当其中有一项用户选择了“不限”,其他都选择了其他选项时,如何查询“不限”这一项的字段?Select语句怎么写?另外一个问题,在“房屋面积”条件里有“50-100平米”这种选项,如何实现Between查询?是利用Value值实现吗?如果是,如何实现?
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 20:56:331楼 得分:0
    学习一下,怎样写搜索功能:
    http://download.csdn.net/source/408631http://download.csdn.net/source/408631

    你应该想到,如果下拉列表,当用户选择"无限"时,你就当用户没有找这个条件的.你可以省略这个条件.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 21:35:432楼 得分:0
    选了不限,你就把查询条件去掉不就行了...
    50-100.就是>50 and <100
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • DBKING
    • 等级:
    发表于:2008-05-11 22:11:433楼 得分:10
    按你所说
    你的DDL中有
    text="不限" value=""
    text="50-100" value=" and 房屋面积 between 50 and 100"
    text="101-200" value=" and 房屋面积 between 101 and 200"
    text="200-300" value=" and 房屋面积 between 201 and 300"
    text="300+" value=" and 房屋面积 > 300"

    你在写地层的SQL语句中可以这样
    "SELECT * FROM TABLENAME WHERE 1=1" + DDL.value;
    这样就解决了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 22:12:554楼 得分:0
    ....................................................................
    现在还有人在客户端放SQL语句....
    无敌了...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • DBKING
    • 等级:
    发表于:2008-05-11 22:30:335楼 得分:0
    引用 4 楼 popeyepower 的回复:
    ....................................................................
    现在还有人在客户端放SQL语句....
    无敌了...

    楼上说话不用那么刻薄吧,我只是说实现思路,我写的东西当然可以把value写成"100-200"只类,之后再去BLL层消化.
    LZ是出学者,对一个出学者来说,先把整体思路弄明白才识最主要的,一个软件的设计如果上来考虑过多的其他问题,而不是去考虑需求实现,那么会造成整体逻辑的混乱.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 22:47:466楼 得分:0
    没刻薄你哦...
    既然知道别人是新手.你帖的代码别人大多都是照着抄...
    别把坏习惯传染给人家.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 22:59:017楼 得分:30
    如果value是50-100,服务器接收了可以用Split()函数根据字符"-"进行拆分,在转化为合适的SQL语句

    可以把"不限"的value设置为0,"300+"的value设置为300,在服务器如果找不到"-"字符,再进行相应的处理
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 23:32:338楼 得分:10
    把搜索条件放到一个表里面,有主键ID
    比如:
    1 fangwu <50                        <50
    2 fangwu>50 and fangwu <100    50-100
    3 1=1                            -
    fangwu是我假定的字段,这样来进行匹配,如果懂存储过程,就非常好办了,如果不会,那就只有读出来拼了,这样基本上没有问题了
    "select * from t1 where "+dr["tiaojian"].tostring()
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 07:44:569楼 得分:0
    DropDownList里放什么不重要,重要的是你可以判断出用户选择的是什么,在后台做判断就行了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 20:58:2310楼 得分:0
    1L2L的朋友可能没太明白我的意思~~最后只用一个SELECT语句的

    我去试试各位介绍的方法,谢谢了~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 21:01:2811楼 得分:0
    DDL里面的VALUES我也知道写成如50-100的,可不知道怎么分开用,试试7楼的方法~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 21:22:1412楼 得分:0
    是逻辑问题,代码如下

    SQL code
    -- set as optional parameter @area int = -1 -- area = -1 means true WHERE ( area = -1 OR area = @area )
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 22:12:3213楼 得分:0
            string search="";//这是查询的条件,放在WHERE后面的
            if (DropDownList1.SelectedValue != "不限")
            {
                search +="and ziduan like '%"+DropDownList1.SelectedValue +"%'";
            }
            if (DropDownList2.SelectedValue != "不限")
            {
                search != "and ziduan like '%"+DropDownList2.SelectedValue +"%'";
            }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 22:36:4714楼 得分:0
    个人觉得下拉框的初始化和相应的sql查询语句存在着关联关系,可以把它们独立出来以便于代码的编写和维护。

    C# code
    /// <summary> /// 初始化下拉框控件 /// </summary> /// <param name="ddlA"></param> public void InitializeDropDownList(DropDownList ddlA) { ddlA.Items.Clear(); ddlA.Items.Add( new ListItem("不限", "0")); ddlA.Items.Add( new ListItem("50-100", "1")); ddlA.Items.Add( new ListItem("101-200", "2")); ddlA.Items.Add( new ListItem("201-300", "3")); ddlA.Items.Add( new ListItem("300+", "4")); } /// <summary> /// 根据下拉框控件的选中项获取sql查询语句 /// </summary> /// <param name="ddlA"></param> /// <returns></returns> public string GetSelectSql(DropDownList ddlA) { int selectedValue = 0; string strSql = string.Empty; try { selectedValue = int.Parse(ddlA.SelectedValue); } catch { } switch(selectedValue) { case 1: // 在此处编写返回的Sql语句 break; case 2: break; case 3: break; case 4: break; case 0: default: break; } return strSql; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 22:38:4415楼 得分:0
    当需求发生变化时可只针对上面2个方法进行修改
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 15:23:0316楼 得分:0
    最近比较忙所以不常上网。。。。
    关于50-100平米数的问题用split()已经解决了,多谢7楼。
    不限还没有解决....再试试大家推荐的方法....
    多谢各位了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-18 15:43:4417楼 得分:0
    不限的问题解决了
    写SELECT语句时,写成 WHERE "+a+"..........

    比如:用IF判断下如果Area条件选择了“不限” 那么 a="1=1"; 否则a="area="+dropdownlist1.selectedValue;
    以此类推吧

    和三楼的朋友意思差不多,感谢感谢!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved