如何管理嵌套转发器在哪里条件?

时间:2011-07-16 13:39:11

标签: asp.net repeater

我有嵌套转发器。 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>

现在我没有说明如何显示第二个转发器数据?

可能这是解决此问题的不正确方法。请建议我正确的方法或任何解决方案。

1 个答案:

答案 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