我希望在数据源没有项目的情况下不要写我的页眉和页脚HTML。
我该怎么做?
答案 0 :(得分:6)
如果数据源没有项目,我建议将Repeater可见性设置为false。
答案 1 :(得分:1)
如果你想使用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>
答案 2 :(得分:1)
利用Cyberdrew关于让它变得不可见的想法, 以下代码对我有用,我可以正确地计算项目数。
void Repeater1_PreRender(object sender, EventArgs e)
{
Repeater rpt = (Repeater)sender;
if (rpt.Items.Count == 0)
{
rpt.Visible = false;
}
}
答案 3 :(得分:0)
这是一个嵌套的转发器示例子转发器访问父转发器数据源
我推荐以下内容,它似乎对我来说很好。注意我正在使用页眉和页脚,并根据父站点地图节点的子节点存在的条件有条件地填充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>