0

我有 2 张桌子:

carType:
==
id
CarTypeTitle

Items
==
id
ItemTitle
CarTypeId1
CarTypeId2
CarTypeId3

如您所见,我建立了 CarTypeId(来自 Items 表)与 id(CarType 表)之间的关系,以及 CarTypeId2(来自 Items 表)与 id(CarType 表)之间的关系......等等。

我有 2 个下拉列表,ddl1,ddl2。ddl1 用于 carTypes, ddl2 用于项目。我在级联方面取得了成功,这对 ddl2 的 WHERE 参数非常有用:

<asp:LinqDataSource ID="LinqDataSource4" runat="server" ContextTypeName="DataClassesDataContext" EntityTypeName="" TableName="Items" Where="CarTypeId1 == @CarTypeId1">
    <WhereParameters>
        <asp:ControlParameter ControlID="ddl2" Name="CarTypeId" PropertyName="SelectedValue" Type="Int32" />
    </WhereParameters>
</asp:LinqDataSource>

当我选择cartype时,ddl2给我根据cartypeid1的项目。但是我如何编写代码(WHERE 参数)会给我 type2 和 3。

我有一些与同一车型相关的项目,即:Wiper-bla 与 subaro 和 fiat 相关......所以我给他们提供 subaro 和 fiat 的 cartypeid ......

希望一切都很清楚。

4

1 回答 1

1

这是你想要的?

<asp:LinqDataSource ID="LinqDataSource4" runat="server" ContextTypeName="DataClassesDataContext" EntityTypeName="" TableName="Items" Where="CarTypeId1 == @CarTypeId OR CarTypeId2 == @CarTypeId OR CarTypeId3 == @CarTypeId">
    <WhereParameters>
        <asp:ControlParameter ControlID="ddl2" Name="CarTypeId" PropertyName="SelectedValue" Type="Int32" />
    </WhereParameters>
</asp:LinqDataSource>

但是,我强烈建议更新您的数据模型以使用单独的表来连接 CarTypes 和 Items。例如

ItemToCarType
=============
ItemId
CarTypeId

使用此表,您可以为每个项目包含无限数量的 CarType。而且您将简化查询,因为您不需要单独处理每个字段(就像OR在本示例中使用一样)

于 2011-05-10T09:48:40.760 回答