显示 objects 列表中的分层数据
Display hierarchal data from list of objects
我有一个 objects 的列表,我想以特定方式显示它,但遇到的麻烦比我预期的要多。基本上我需要如下设置:
- Parent 2 级 (header)
- Child table
中的 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>
parent 中继器上发生了一个事件,用于对第二个中继器进行数据绑定,但我很快意识到没有逻辑告诉它只显示具有 parent 级别 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>
我有一个 objects 的列表,我想以特定方式显示它,但遇到的麻烦比我预期的要多。基本上我需要如下设置:
- Parent 2 级 (header)
- Child table 中的 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>
parent 中继器上发生了一个事件,用于对第二个中继器进行数据绑定,但我很快意识到没有逻辑告诉它只显示具有 parent 级别 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>