在C#中选择多个下拉菜单的动态SQL
本文关键字:下拉菜单 动态 SQL 选择 | 更新日期: 2023-09-27 18:29:35
Hie我是ASP.Net的新手,需要一些帮助。
这是我的问题:我的应用程序中有4个下拉菜单,一个按钮显示搜索,网格视图显示结果。我试图根据下拉列表的值过滤结果。
因此,我将查询写为"select*from table where column1=dd1.SelectedItem.Value",但棘手的是,即使选择了其中一个下拉列表、两个下拉列表或全部下拉列表,我也希望显示结果。如何在SQL查询中编写Where部分??我知道我必须使用动态SQL,但我对动态SQL一无所知。
使用类似的东西
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);
首先,您应该将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);