2011-07-05 29 views
8

Repeater不包含任何项目时,它根本不会呈现为HTML格式,即使是HeaderTemplateFooterTemplate。我需要在客户端操作它,即使它是空的。渲染空中继器

有没有什么办法总是渲染HTML中的Repeater?

+2

'HeaderTemplate'和'即使数据源没有返回项目FooterTemplate'仍应被渲染。这些模板是否为空? –

回答

9

<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

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

8

为@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; 
      } 
     } 
    } 
} 
+0

这实际上是更好,更完整的答案 – BritishDeveloper

3
<asp:Repeater ID="rptList" runat="server" DataSourceID="odsList"> 
    ... 
    <FooterTemplate> 
     <%if (rptList.Items.Count == 0) 
      { %> 
      **Your message** 
     <%} %> 
    </FooterTemplate> 
</asp:Repeater> 
+0

我认为回传时除非您再次调用DataBind(),否则回传时“rptList.Items”为空。所以有一个警告 –