Где параметры в LinqDataSource - PullRequest
0 голосов
/ 10 мая 2011

У меня есть 2 таблицы:

carType:
==
id
CarTypeTitle

и

Items
==
id
ItemTitle
CarTypeId1
CarTypeId2
CarTypeId3

, как вы можете видеть, я установил связь между CarTypeId (из таблицы Items) и id (таблица CarType), иОтношение между CarTypeId2 (из таблицы элементов) и идентификатором (таблица CarType) ... и т. д.

У меня есть 2 выпадающих списка, ddl1, ddl2.ddl1 для carTypes и ddl2 для элементов.Мне удалось с каскадом, и это прекрасно работает с параметром WHERE в ddl2:

<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 ..так что я даю им телегу из субаро и фиат ...

надеюсь, что все ясно.

1 Ответ

1 голос
/ 10 мая 2011

Это то, что вы ищете?

<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

С помощью этой таблицы вы можете включать неограниченное количество типов карт для каждого элемента.И вы упростите свои запросы, потому что вам не нужно обрабатывать каждое поле отдельно (как в этом примере OR)

...