日期:2014-05-19  浏览次数:20931 次

asp.net初学者问一个根据DropDownList的值进行模糊查询的方法。

在按钮Click事件里我是按如下方式写的:

string   strSql   =   "select   A,   B,   C,   D,   E   from   TABLE   where   ";
switch   (DropDownList1.Text)
{
                        case   "注册号 ":
                                strSql   +=   "A ";
                                break;
                        case   "企业名称 ":
                                strSql   +=   "B   ";
                                break;
}
strSql   +=   "   like   '% '   ||   :VALUE   ||   '% ' ";

SqlDataSource1.SelectCommand   =   strSql;

---------------------------------------
对应的HTML   Tag里的SqlDataSource
<asp:SqlDataSource   ID= "SqlDataSource1 "   runat= "server "   ConnectionString= " <%$   ConnectionStrings:ConnectionString   %> "   ProviderName= " <%$   ConnectionStrings:ConnectionString.ProviderName   %> "   SelectCommand= "select   A,   B,   C,   D,   E   from   TABLE   where   A   like   '% '   ||   :VALUE   ||   '% ' ">
<SelectParameters>
                                <asp:ControlParameter   ControlID= "TextBox1 "   Name= "VALUE "   PropertyName= "Text "   />
                        </SelectParameters>
</asp:SqlDataSource>

-----------------------------------------------
注:是访问Oracle数据库,所以用了||符号。

一个GridView绑定到SqlDataSource1

程序可以运行,查询也OK。


我只想问这种情况下有没有更合理的方式解决这类问题。
就是根据DropDownList的取值,进行不同数据库字段的模糊查询。



------解决方案--------------------
既然字段不固定的话,那么就自动用字符串连接了

可以将表的字段和中文名做一个基础数据表保存起来

在dropdownlist绑定的时候,valuefield用字段名,textfield用中文名

这样通过selectedvaule 就可以直接访问了