2011-07-16 44 views
0

我有嵌套的中繼器。 First Repeater顯示來自CityTable的CityName。第二個轉發器將顯示CityDetails,它將根據cityName來自另一個表。如何管理與哪裏條件嵌套中繼器?

輸出將看起來像這樣。

City1 

Data1 
Data2 

City2 

Data3 
Data4 and so on. 

我爲此採取了嵌套式中繼器。

<asp:Repeater ID="rp1" runat="server"> 
     <ItemTemplate> 
     <%# GetImageSource(Eval("CityName"))%> 
      <asp:Repeater ID="rp2" runat="server" > 
       <ItemTemplate> 
        <%#DataBinder.Eval(Container.DataItem, "DealHeadline")%> 
       </ItemTemplate> 
      </asp:Repeater> 
     </ItemTemplate> 
    </asp:Repeater> 

現在我不明白如何顯示第二個轉發器數據?

可能是這是解決此問題的不正確方法。請建議我正確的方式或任何解決方案。

+0

可以通過這個鏈接的http://支持.microsoft.com/kb/306154 – DSharper

+0

請看看這個類似的線程http://stackoverflow.com/questions/1220715/creating-a-nested-repeater-control-dynamically/1220836#1220836 –

回答

0

我解決它通過以下方式我希望它能幫助:

.aspx的代碼:

<asp:Repeater ID="CityRpt" runat="server"><ItemTemplate><li> 
     <%# DataBinder.Eval(Container.DataItem, "City")%> 

       <!-- start child repeater --> 
       <ul class="subleveltwo"> 
       <asp:repeater id="BuildingRpt" datasource='<%# CType(Container.Dataitem,System.Data.DataRowView).Row.GetChildRows("RelationName") %>' runat="server"> 
         <itemtemplate><li><%# DataBinder.Eval(Container.DataItem, "[""ColumnName""]")%><br></li></itemtemplate> 
       </asp:repeater> 
       </ul> 
       <!-- end child repeater --> 

     </li></ItemTemplate></asp:Repeater> 
    </ul> 
     <!-- end Parent repeater --> 

Vb.Net代碼:

Dim propertyType As String = "Property_A" 

    Dim ds As DataSet = MaxxDatabaseHelper.GetBuildingsByCity() 


    'get distinct results into datatable 
    Dim TableC As DataTable = (From myRow In ds.Tables(1).AsEnumerable() 
     Where (myRow.Field(Of String)("Property_Type") = propertyType) 
         Select myRow).Distinct().CopyToDataTable() 
    'add to dataset 
    ds.Tables.Add(TableC) 

    ds.Relations.Add("RelationName", ds.Tables(0).Columns("City"), ds.Tables(2).Columns("City")) 

    If (ds IsNot Nothing Or ds.Tables(0).Rows.Count <> 0) Then 
     CityRpt.DataSource = ds.Tables(0) 
     'page bind 
     Page.DataBind() 
    End If