我有一个电子商务网站,其中包含产品目录。我想要一个下拉菜单,您可以在其中选择您的车辆,我想过滤掉您的车辆不兼容的所有目录项目。我正在使用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
另一个问题是为产品设置多个兼容车辆。现在我每个产品只能选择一个兼容的车辆。
答案 0 :(得分:0)
第1步:您需要一个单独的表VehicleProducts(或ProductVehicles),以便您可以进行交叉引用(感谢更新,这使得它更加清晰!)。
第2步:当用户从DropDownList中选择一个产品时,您需要在填充主GridView / Repeater / Whatever的语句中添加Where子句
foo
哪里?是DropDownList中的值。