我有嵌套转发器。 First Repeater显示来自CityTable的CityName。第二个转发器将根据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>
现在我没有说明如何显示第二个转发器数据?
可能这是解决此问题的不正确方法。请建议我正确的方法或任何解决方案。
答案 0 :(得分: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