当Repeater
不包含任何项目时,它根本不会呈现为HTML格式,即使是HeaderTemplate
或FooterTemplate
。我需要在客户端操作它,即使它是空的。渲染空中继器
有没有什么办法总是渲染HTML中的Repeater?
当Repeater
不包含任何项目时,它根本不会呈现为HTML格式,即使是HeaderTemplate
或FooterTemplate
。我需要在客户端操作它,即使它是空的。渲染空中继器
有没有什么办法总是渲染HTML中的Repeater?
在<FooterTemplate>
中,添加一个标签,其中包含一些空的数据文本并将其visible属性设置为false。
<FooterTemplate>
<table>
<tr>
<td>
<asp:Label ID="lblEmptyData"
Text="No Data To Display" runat="server" Visible="false">
</asp:Label>
</td>
</tr>
</table>
</FooterTemplate>
现在检查绑定中继器的数据,如果没有行返回,然后使标签可见,否则不行。
更多详细信息here。
试试这个
protected bool IsDataEmpty
{
get
{
ICollection list = Repeater1.DataSource as ICollection;
return list.Count == 0 ? true : false;
}
}
在标记:
<table width="80%">
<tr runat="server"
visible='<%# IsDataEmpty %>'>
<td>
There is no data to display
</td>
</tr>
一步一步按照链接:Link
为@Saurabh说,使用<FooterTemplate>
添加一个Label与指定您的留言在Text属性中,并将其可见属性设置为false,如下所示:
<FooterTemplate>
<%-- Label used for showing Error Message --%>
<asp:Label ID="ErrorMessage" runat="server" Text="Sorry!!" Visible="false">
</asp:Label>
</FooterTemplate>
然后在代码隐藏中使用以下逻辑;如果没有数据,显示信息,否则,显示数据如下:
protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Repeater rpt = sender as Repeater; // Get the Repeater control object.
// If the Repeater contains no data.
if (rpt != null && rpt.Items.Count < 1)
{
if (e.Item.ItemType == ListItemType.Footer)
{
// Show the Error Label (if no data is present).
Label ErrorMessage = e.Item.FindControl("ErrorMessage") as Label;
if (ErrorMessage != null)
{
ErrorMessage.Visible = true;
}
}
}
}
这实际上是更好,更完整的答案 – BritishDeveloper
<asp:Repeater ID="rptList" runat="server" DataSourceID="odsList">
...
<FooterTemplate>
<%if (rptList.Items.Count == 0)
{ %>
**Your message**
<%} %>
</FooterTemplate>
</asp:Repeater>
我认为回传时除非您再次调用DataBind(),否则回传时“rptList.Items”为空。所以有一个警告 –
'HeaderTemplate'和'即使数据源没有返回项目FooterTemplate'仍应被渲染。这些模板是否为空? –