Использование фильтра предварительного поиска ASP.NET с#
Привет друзья,
Я пытаюсь создать расширенный поисковый запрос , который позволит пользователям вводить столько фильтров, сколько они хотят. этот фильтр содержит различные элементы управления Asp, такие как dropdownlist и checkbox.
Это запрос , который я использую ,проблема в том, что он требует, чтобы фильтр enter all работал, мне нужно, чтобы он принимал любую коллекцию фильтров ,
(пожалуйста, опубликуйте свои ответы с изменением моего кода для лучшего понимания).
Проверьте правильность моего запроса ?
Проверьте также, правильно ли мой парамитризованный код ?
БЛАГОДАРИТЬ ВСЕХ.
Что я уже пробовал:
public partial class Searchpage : System.Web.UI.Page { SqlConnection con = new SqlConnection(); string price1; string price2; string osx; string checktwog; string checkthreeg; string checkfourg; string phonetype; string cam; string ram; string q; protected void Page_Load(object sender, EventArgs e) { con.ConnectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; con.Open(); try { price1 = Convert.ToString(Session["price1"]); price2 = Convert.ToString(Session["price2"]); osx = Convert.ToString(Session["osx"]); checktwog = Convert.ToString(Session["checktwog"]); checkthreeg = Convert.ToString(Session["checkthreeg"]); checkfourg = Convert.ToString(Session["checkfourg"]); phonetype = Convert.ToString(Session["phonetype"]); cam = Convert.ToString(Session["cam"]); ram = Convert.ToString(Session["ram"]); q = "SELECT * FROM legacy WHERE [price] >= @prc1 AND [price] <= @prc2 AND [os] = @systm AND [gprsedge] = @gtwog AND [threeg] = @gthreeg AND [fourg] = @gfourg AND [touchscreen] = @touchtype AND [camera] = @ccamera AND [ram] = @rram"; SqlDataSource1.SelectCommand = q; SqlDataSource1.DataBind(); lbl_item_page.Text = Convert.ToString(checktwog); SqlCommand comm = new SqlCommand(q, con); comm.Parameters.AddWithValue("@prc1", price1); comm.Parameters.AddWithValue("@prc2", price2); comm.Parameters.AddWithValue("@systm", osx); comm.Parameters.AddWithValue("@gtwog", checktwog); comm.Parameters.AddWithValue("@gthreeg", checkthreeg); comm.Parameters.AddWithValue("@gfourg", checkfourg); comm.Parameters.AddWithValue("@touchtype", phonetype); comm.Parameters.AddWithValue("@ccamera", cam); comm.Parameters.AddWithValue("@rram", ram); } catch (Exception ex) { Response.Write(ex.ToString()); } }
F-ES Sitecore
Проверьте, есть ли у переменных какие-либо допустимые данные, прежде чем добавлять их в предложение where
q = "select * from legacy where "
если (!строка.IsNullOrWhitespace(price1))
{
q = q + "price >= @price and "
}
и так далее, затем удалите любой текст "и" в конце строки, и у вас будет запрос, который содержит только то, что вас интересует. Вам также нужно будет позаботиться о том, когда нет действительных параметров и т. д.
}