我正试图通过Vehicle为我的电子商务网站排序目录

时间:2016-04-13 20:21:21

标签: sql asp.net forms web

我有一个电子商务网站,其中包含产品目录。我想要一个下拉菜单,您可以在其中选择您的车辆,我想过滤掉您的车辆不兼容的所有目录项目。我正在使用asp.net网络表单

我有一个包含vehicleName和vehicleID列的Vehicle表。我的产品表中有一列用于选择兼容的vehicleID(外键)。

这是c#代码。这个想法是当你从下拉列表中选择VehicleName时,它会将int vid设置为相应的VehicleID并过滤结果。

    public IQueryable<Product> GetProducts([QueryString("id")] int? categoryId)
    {
        var _db = new RetailSite.Models.ProductContext();
        IQueryable<Product> query = _db.Products;
        if (vid > 0)
        {
            query = query.Where(p => p.VehicleID == vid); //vid is the vehicleID selected
        }
        return query;
    }

基本上,我想要一个带有vehicleNames的下拉菜单,它会将int vid更改为vehicleID,这将依次过滤所有结果以仅显示兼容的车辆。 (我认为这是一种合理的方式,当我手动将vid设置为1时它可以正常工作)我开始使用类似的东西,虽然DropDownList不会显示而不会被放入gridview或类似的东西。

  <asp:SqlDataSource ID="SqlDataSource" runat="server"
  ConnectionString="<%$ ConnectionStrings:WingtipToys %>"
  SelectCommand="SELECT * FROM [Vehicles]">

  <asp:DropDownList ID="DropDownList1" runat="server"
  DataSourceID="SqlDataSource" DataTextField="VehicleName" DataValueField="VehicleName"
  SelectedValue='<%# Bind("VehicleName") %>'>
  </asp:DropDownList>

有什么想法吗?这是我的网站,如果你想看看2660-11791.el-alt.com

另一个问题是为产品设置多个兼容车辆。现在我每个产品只能选择一个兼容的车辆。

1 个答案:

答案 0 :(得分:0)

第1步:您需要一个单独的表VehicleProducts(或ProductVehicles),以便您可以进行交叉引用(感谢更新,这使得它更加清晰!)。

第2步:当用户从DropDownList中选择一个产品时,您需要在填充主GridView / Repeater / Whatever的语句中添加Where子句

foo

哪里?是DropDownList中的值。