如果类别链接是导航,如何按照与其关联的类别搜索产品。
但是,当我点击某些类别时,它没有显示与该类别相关的产品,显示所有产品。
例如,如果我点击Starters,那么starters产品将不会显示所有产品。
我正在使用datalist来展示产品。我一直试图从2晚以来对此进行梳理并进行了大量研究,但找不到我需要的具体内容。
你可以帮我解决这个问题吗?我在我的产品页面中使用此编码,但它无效
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
if (Request.QueryString["category"] ==null)
{
cmd.CommandText = "select * from Products";
}
else
{
cmd.CommandText = "select * from Products where product_category='" + Request.QueryString["category"].ToString() + "'";
}
cmd.CommandText = "select * from Products";
cmd.ExecuteNonQuery();
DataTable dtt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dtt);
DataList1.DataBind();
con.Close();
答案 0 :(得分:1)
你有3个问题:
在cmd.CommandText = "select * from Products";
阻止后移除else
。
并设置数据源:
if (Request.QueryString["category"] ==null)
{
cmd.CommandText = "select * from Products";
}
else
{
//use parameters to prevent SQL injection
cmd.CommandText = "select * from Products where product_category=@category";
cmd.Parameters.Add(new SqlParameter("category", Request.QueryString["category"]));
}
//cmd.CommandText = "select * from Products";<--- delete this line
/*.. exeute quesry and load into datatable */
//bind datalist:
DataList1.DataSource = dtt;
DataList1.DataBind();
答案 1 :(得分:1)
我自己对此进行了整理。只是为了帮助,这是我的代码,它适用于我。
//This is for displaying PRODUCTS.
#region
con.Open();
SqlCommand cmdp = con.CreateCommand();
cmdp.CommandType = CommandType.Text;
var categoryID = Request.QueryString["category"];
int catId = string.IsNullOrEmpty(categoryID) ? 0 : int.Parse(categoryID);
if (!string.IsNullOrEmpty(categoryID))
cmdp.CommandText = " select * from products where [category_id] = " + catId;
else
cmdp.CommandText = "select * from products";
cmdp.ExecuteNonQuery();
DataTable dttp = new DataTable();
SqlDataAdapter dap = new SqlDataAdapter(cmdp);
dap.Fill(dttp);
Datalist1.DataSource = dttp;
Datalist1.DataBind();
con.Close();
#endregion
答案 2 :(得分:0)
在if语句之后,您仍然设置命令文本以选择所有产品,因此请注释cmd.CommandText =“select * from Products”;在if语句之后再试一次