0

私は2つのテーブルを持っています:

carType:
==
id
CarTypeTitle

Items
==
id
ItemTitle
CarTypeId1
CarTypeId2
CarTypeId3

ご覧のとおり、CarTypeId (Items テーブルから) から id (CarType テーブル) への関係、および CarTypeId2 (Items テーブルから) から id (CarType テーブル) への関係などを作成しました。

私は2つのドロップダウンリスト、ddl1、ddl2を持っています。carTypes の場合は ddl1、アイテムの場合は 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 の項目に従ってくれます。しかし、type2 と 3 を与えるコード (WHERE パラメーター) をどのように書くか。

同じ車種に関連するアイテムがいくつかあります。つまり、ワイパーブラはスバロとフィアットに関連しています...だから、スバロとフィアットの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

このテーブルを使用すると、各アイテムに無制限の数の CarTypes を含めることができます。また、すべてのフィールドを個別に処理する必要がないため (ORこの例での使用のように) 、クエリが簡素化されます。

于 2011-05-10T09:48:40.760 に答える