过滤与其类别C#ASP.NET关联的产品

问题描述 投票:0回答:3

Picture Click here

如果类别链接是导航,如何按与其关联的类别搜索产品。

  1. 我创建了一个Category table = category_id,product_category
  2. 我也在products表中添加了product_category。
  3. 我可以通过管理面板添加类别,如果你查看我附上的屏幕截图,它就会完美显示。

但是,当我点击某些类别时,它没有显示与该类别相关的产品,从字面上显示所有产品。

例如,如果我单击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();
c# asp.net datalist
3个回答
1
投票

你有3个问题:

  1. 您没有使用Sql参数(qazxsw poi)。
  2. 在else阻止后重置sql查询。这将返回所有未经过滤的项目 - 每次。
  3. 您不会将数据列表绑定到数据表。 (也许你在其他地方设置了数据源,但我们看不到它。我只是列出这个很好的衡量标准)

在你的Exploits of a Mom阻止之后删除cmd.CommandText = "select * from Products";。并设置数据源:

else

1
投票

我自己整理了这个。只是为了帮助这是我的代码,它适用于我。

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();

0
投票

在if语句之后,您仍然设置命令文本以选择所有产品,因此请注释cmd.CommandText =“select * from Products”;在if语句之后再试一次

© www.soinside.com 2019 - 2024. All rights reserved.