在C#中选择多个下拉列表的动态SQL

时间:2016-01-09 21:43:27

标签: c# asp.net sql-server

我是ASP.Net的新手,需要一些帮助。

这是我的问题:我的应用程序中有4个下拉菜单,一个用于搜索的按钮,用于显示结果的网格视图。我试图根据下拉值来过滤结果。

所以我把查询写成“select * from table where column1 = dd1.SelectedItem.Value”,但棘手的部分是我希望显示结果,即使选择了其中一个下拉菜单或选择了其中两个或者所有这些都被选中。我如何在SQL查询中编写Where Part?我知道我必须使用动态SQL,但我对动态SQL没有任何线索。

2 个答案:

答案 0 :(得分:1)

使用类似的东西

            string q = @"
SELECT * FROM table 
WHERE 
(@value1 IS NULL OR column1 = @value1) 
AND
(@value2 IS NULL OR column2 = @value2) 
AND
(@value3 IS NULL OR column3 = @value3) 
";

            var command = new SqlCommand();
            command.CommandText = q;

            command.Parameters.AddWithValue("@value1", dd1.SelectedItem.Value);
            command.Parameters.AddWithValue("@value2", dd2.SelectedItem.Value);
            command.Parameters.AddWithValue("@value3", dd3.SelectedItem.Value);

答案 1 :(得分:0)

首先,您应该将 dd1.SelectedItem.Value 存储在变量中

string v = dd1.SelectedItem.Value.ToString();

然后为您的查询创建一个字符串

string q = "select * from table where (column1 is null or column1=" + v + ")";

然后使用此代码:

SqlCommand com = new SqlCommand(q, yoursqlconnection);
SqlDataAdapter da = new SqlDataAdapter(com);
DataTable dt = new DataTable();
da.Fill(dt);