2011-07-16 25 views
0

私は入れ子にされたリピーターを持っています。 First RepeaterはCityTableからのCityNameを表示しています。そして2番目のリピータは、cityNameに基づいて別のテーブルから来るCityDetailsを表示します。どこの状態で入れ子のリピータを管理するのですか?

出力は次のようになります。

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> 

ここで、2番目のリピータデータを表示する方法がわかりません。

この問題を解決する方法が正しくない可能性があります。私に正しい方法や解決策を提案してください。

+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 
関連する問題