2011-05-10 48 views
0

參數我有2個表:凡的LinqDataSource

carType: 
== 
id 
CarTypeTitle 

Items 
== 
id 
ItemTitle 
CarTypeId1 
CarTypeId2 
CarTypeId3 

,你可以看到,我做了CarTypeId之間的ID(CarType表)的關係(從項目表),並CarTypeId2(從Items表)到id(CarType表)...之間的relatshionship ...等等。

我有2 dropdownlist,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參數),這將給我的類型2和3.

我有一些項目涉及到相同的cartype,即:刮水器bla是關係到subaro和法定...所以我給他們subaro和fiat cartypeid ...

希望這一切都很清楚。

回答

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

+0

使用OR是我尋找的。我問了很多次這個問題,一無所獲,你的回答非常好!非常感謝 ! – Oshrib 2011-05-10 09:58:22