显示对象列表中的分层数据

本文关键字:分层 数据 对象 列表 显示 | 更新日期: 2023-09-27 18:32:13

我有一个想要以特定方式显示的对象列表,并且遇到的麻烦比我预期的要多得多。本质上,我需要如下设置:

  • 父级别 2(标头)
  • 表中的子级别 3 项

重复此操作,直到每次页面加载时拉取的列表末尾。我尝试了嵌套中继器,但失败了。

<asp:Repeater runat="server" ID="parentMeetingRepeater" >
<ItemTemplate>
    <h5><%# GetParentMeetingName(Eval("Id")) %></h5>
    <hr />
    <asp:Repeater runat="server" ID="childMeetingRepeater" >
        <HeaderTemplate>
            <table style="width: 100%;">
        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <td>
                    <a href="/Display.aspx?ccbid=<%# Eval("Id")%>"><%# Eval("Name") %></a>
                </td>
                <td>
                    <%# Eval("Description") %>
                </td>
            </tr>
        </ItemTemplate>
        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:Repeater>
</ItemTemplate>                       

父转发器

上有一个事件要对第二个转发器进行数据绑定,但我很快意识到没有逻辑可以告诉它仅显示具有级别 2 id 的父级的 3 级项目。任何想法我如何能够解决这个问题?我认为嵌套中继器可能是错误的方向。-谢谢

显示对象列表中的分层数据

在得到一些建议后,我最终使用了列表视图。与数据对象列表和嵌套转发器的正确绑定让我精神上,所以这是一个更干净的路线。

               <asp:ListView ID="uxTaxonomies" runat="server" ItemPlaceholderID="itemPlaceholder">
                    <LayoutTemplate>
                        <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
                    </LayoutTemplate>
                    <ItemTemplate>
                        <h5><%#((TaxonomyData)Container.DataItem).Name %></h5>
                        <hr/>
                        <asp:ListView ID="uxTaxChildren" runat="server" ItemPlaceholderID="itemPlaceholder" DataSource="<%#((TaxonomyData)Container.DataItem).Taxonomy %>">
                            <LayoutTemplate>
                                <table class="noBorder">
                                    <tbody>
                                        <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
                                    </tbody>
                                </table>
                            </LayoutTemplate>
                            <ItemTemplate>
                                <tr>
                                    <td><a href="/MeetingDisplay.aspx?ccbid=<%#((TaxonomyData)Container.DataItem).Id %>"><%#((TaxonomyData)Container.DataItem).Name %></a>  </td>
                                    <td><%#((TaxonomyData)Container.DataItem).Description %></td>
                                </tr>
                            </ItemTemplate>
                        </asp:ListView>
                    </ItemTemplate>
                </asp:ListView>