ASP.NET Repeater控件:如果数据包含零元素,如何不显示标题模板?

我希望我的页眉和页脚HTML不要在数据源没有项目的情况下写入。 我怎么做?     
已邀请:
如果数据源没有项目,我建议将Repeater可见性设置为false。     
如果你想使用jQuery,请参阅下文
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
    <script type="text/javascript">
        $(document).ready(function () { if ($("#divItemDetails").text().length > 0) { $('#RepeaterDiv').show(); } });
    </script>
    <div style="overflow: hidden; display: none" id="RepeaterDiv">
        <asp:Repeater runat="server" ID="RepeaterID" DataSourceID="RepeaterDataSource">
            <HeaderTemplate>
                All Names </br>
            </HeaderTemplate>
            <ItemTemplate>
                </br>
                <div id="divItemDetails">
                    <%# Container.DataItem%>
                </div>
                </br>
            </ItemTemplate>
        </asp:Repeater>
        <asp:ObjectDataSource runat="server" ID="RepeaterDataSource" SelectMethod="GetAllEmployees"
            TypeName="MyCustomBAL" />
    </div>
    </form>
</body>
</html>
    
利用Cyber​​drew关于让它变得隐形的想法, 以下代码适用于我能够正确获取项目的代码。
void Repeater1_PreRender(object sender, EventArgs e)
{
Repeater rpt = (Repeater)sender;
if (rpt.Items.Count == 0)
{
    rpt.Visible = false;
}
}
    
这是一个嵌套的转发器示例子转发器访问父转发器数据源 我推荐以下内容,它似乎对我来说很好。注意我正在使用页眉和页脚,并根据父站点地图节点的子节点存在的条件有条件地填充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>
    

要回复问题请先登录注册