0

データソースにアイテムがない場合に、ヘッダーとフッターのHTMLが書き込まれないようにします。

それ、どうやったら出来るの?

4

4 に答える 4

6

データソースにアイテムがない場合は、Repeater の可視性を false に設定することをお勧めします。

于 2011-02-21T16:43:04.030 に答える
1

非表示にするという Cyber​​drew のアイデアを利用して、次のコードが機能し、アイテム数を正しく取得できました。

void Repeater1_PreRender(object sender, EventArgs e)
{
Repeater rpt = (Repeater)sender;
if (rpt.Items.Count == 0)
{
    rpt.Visible = false;
}
}
于 2015-04-30T21:45:46.420 に答える
0

これはネストされたリピーターのサンプルです。子リピーターは親リピーターのデータソース
にアクセスします。次の方法をお勧めします。ヘッダーとフッターを使用し、親の sitemapnode の子ノードの存在に基づいて条件付きで ul タグを設定していることに注意してください。

ノードに子がある場合、ul タグを書き出すことがわかっています。

親データソース SiteMapNode を取得するために使用する必要があるダブル キャストに注意してください。

<div class="menu mainNav">
<asp:Repeater ID="rptrMainMenu" runat="server" DataSourceID="sdsMain">
<ItemTemplate>
<%--<li>--%>
<%--<asp:HyperLink runat="server" NavigateUrl='<%#Eval("Url")%>'><%#Eval("Title") %></asp:HyperLink>--%>
<asp:Repeater ID="rptrsub1" runat="server" DataSource='<%#CType(Container.DataItem,SiteMapNode).ChildNodes %>'>
<HeaderTemplate>
<ul class='mainmenu'>
</HeaderTemplate>
<ItemTemplate>
<li class='submenu'>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#Eval("Url")%>'><%#Eval("Title") %></asp:HyperLink>
<asp:Repeater ID="rptrsub1" runat="server" DataSource='<%#CType(Container.DataItem,SiteMapNode).ChildNodes%>'>
<HeaderTemplate>
<%-- <%# If(CStr(Eval("Title") & "") = "", "", "<ul class='submenu'>")%>--%>
 <%-- <% System.Diagnostics.Debugger.Break()%>--%>
<%# If(CType(CType(Container.Parent.Parent, RepeaterItem).DataItem, SiteMapNode).HasChildNodes, "<u class='submenu'>", "")%>
</HeaderTemplate>
<ItemTemplate>
<li class='submenu'>
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl='<%#Eval("Url") %>'><%#Eval("Title")%></asp:HyperLink>
</li>
</ItemTemplate>
<FooterTemplate>
<%# If(CType(CType(Container.Parent.Parent, RepeaterItem).DataItem, SiteMapNode).HasChildNodes, "</u>", "")%>
</FooterTemplate>
</asp:Repeater>
</li>
</ItemTemplate>
<FooterTemplate>
</ul></FooterTemplate>
</asp:Repeater>
<%-- </li>--%>
</ItemTemplate>
    </asp:Repeater>
</div>
于 2013-09-05T16:48:00.867 に答える