当Repeater
不包含任何项目时,它根本不会以HTML格式呈现,即使是HeaderTemplate
或FooterTemplate
。我需要在客户端操纵它,即使它是空的。
有没有办法始终在HTML中呈现Repeater?
答案 0 :(得分:10)
在<FooterTemplate>
中,添加带有一些空数据文本的Label,并将其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>
现在检查绑定转发器时的数据,如果没有行返回则make标签可见,否则无法执行操作。
更多详情here。
答案 1 :(得分:8)
正如@Saurabh所说,使用<FooterTemplate>
添加一个Label,在Text属性中指定你的消息,并将其visible属性设置为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;
}
}
}
}
答案 2 :(得分:4)
<asp:Repeater ID="rptList" runat="server" DataSourceID="odsList">
...
<FooterTemplate>
<%if (rptList.Items.Count == 0)
{ %>
**Your message**
<%} %>
</FooterTemplate>
</asp:Repeater>
答案 3 :(得分:1)
试试这个
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