如果Repeater控件的DataSource对象在ASP.NET中不包含任何数据,如何显示或隐藏Panel控件?

时间:2014-07-10 10:59:57

标签: c# asp.net webforms bind repeater

我有一个嵌套在Panel控件中的Repeater控件。

<asp:Panel id="tags" runat="server">
    <asp:Repeater ID="rptTags" runat="server" DataSource="<%# this.DataSource %>">
        <ItemTemplate>
            <span class="tag"><%# Eval("Name") %></span>
        </ItemTemplate>
    </asp:Repeater>
</asp:Panel>

我将Repeater控件的DataSource属性设置为 DataSource =“&lt;%#this.DataSource%&gt;”,因为此代码实际上是自定义Web控件的一部分。

我希望显示或隐藏Panel控件,具体取决于DataSource对象中是否包含任何数据。我在代码隐藏中这样做了:

    if (rptTags.Items.Count == 0)
    {
        tags.Visible = false;
    }

我想在ASPX部分做这件事,比如:

<asp:Panel id="tags" runat="server" Visible="<%# ((IEnumerable)DataSource).LengthOrSomething %>">

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

<强> C#

public void TagsPreRender(object sender, EventArgs e) {
  tags.Visible = (((Repeater)sender).Items.Count > 0);
}

<强> ASPX

<asp:Panel id="tags" runat="server" >
    <asp:Repeater OnPreRender="TagsPreRender" ID="rptTags" runat="server" DataSource="<%# this.DataSource %>" >
        <ItemTemplate>
            <span class="tag"><%# Eval("Name") %></span>
        </ItemTemplate>
    </asp:Repeater>
</asp:Panel>