我想将Repeater放在Repeater中。由于我的列表视图同时具有ItemTemplate和Alternate ItemTemplate,我是否需要添加两个中继器并绑定两个中继器?
<asp:ListView ID="lvData" runat="server" onitemdatabound="lvData_ItemDataBound">
<layouttemplate>
<div style="border:dotted 1px gray;">
<asp:PlaceHolder ID="itemPlaceholder" runat="server" />
</div>
</layouttemplate>
<itemtemplate>
<div class="ListView">
<h5><%# Eval("CourseCode") %> - <%# Eval("CourseName") %></h5>
<asp:Repeater ID="rptComments" runat="server">
<ItemTemplate>
<p>
<%# DataBinder.Eval(Container.DataItem, "Comment") %></p>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lblEmpty" Text="No comments to display..." runat="server" Visible='<%#bool.Parse((rptComments.Items.Count==0).ToString())%>'></asp:Label>
</FooterTemplate>
</asp:Repeater>
</div>
</itemtemplate>
<alternatingitemtemplate>
<div class="ListViewAlternate">
<h5><%# Eval("CourseCode") %> - <%# Eval("CourseName") %></h5>
<asp:Repeater ID="rptComments2" runat="server">
<ItemTemplate>
<p>
<%# DataBinder.Eval(Container.DataItem, "Comment") %></p>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lblEmpty" Text="No comments to display..." runat="server" Visible='<%#bool.Parse((rptComments.Items.Count==0).ToString())%>'></asp:Label>
</FooterTemplate>
</asp:Repeater>
</div>
</alternatingitemtemplate>
<emptydatatemplate>
No records to display.
</emptydatatemplate>
</asp:ListView>
答案 0 :(得分:1)
我很确定答案是肯定的。
或者,不要使用AlternatingItemTemplate,而是在ItemTemplate中创建基于您自己的逻辑交替的标记。你基本上只需要使div / @类不同。
如果你能以某种方式从ItemTemplate标记中检索项目的索引/位置,那么你可以使用2的简单除法来确定该项目是奇数还是偶数。
idx % 2 > 0
- &gt;奇;否则甚至
奇:
<div class="ListViewAlternate">
甚至
<div class="ListView">
然后,当然,那里只能有一个儿童中转器。