ASP.Net列表视图不显示EmptyItemTemplate

时间:2011-01-04 11:14:31

标签: c# .net asp.net webforms

我正在将ListView绑定到一组正常工作的对象。不幸的是,当集合为空时,我没有像我期望的那样显示EmptyItemTemplate元素中的文本。

标记代码是

        <asp:ListView ID="lvBuildingContactsGrid" runat="server" 
            onitemcommand="lvBuildingContactsGrid_ItemCommand" >
            <LayoutTemplate>
                   <!-- some more html markup -->
             <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
                   <!-- some more html markup -->
            </LayoutTemplate>
            <ItemTemplate>
                   <!-- some item makup -->           
            </ItemTemplate>
            <EmptyItemTemplate>
                   <p> empty text that isn't displaying </p>                
            </EmptyItemTemplate>
        </asp:ListView>

绑定的代码是

        ContactRoleCollection contactRoles = new ContactRoleCollection();
        contactRoles.ContactRoleSearchByBuildingID(int params);

        lvListView.DataSource = contactRoles;
        lvListView.DataBind();

当集合返回零计数时,则不显示EmptyItemTemplate文本。我查看了页面源,它​​根本没有呈现(而不是被隐藏)。我已经用null替换了DataSource对象,即

lvListView.DataSource = null

只是为了测试它,它仍然不起作用。没有文字再次呈现。

我在其他已经处理过的页面上遇到过这个问题(放弃并完成了kludge的工作),所以这显然只是我所缺少的 - 做错了。

赞赏任何输入

1 个答案:

答案 0 :(得分:25)

看起来你很困惑EmptyItemTemplate,当没有更多的数据项要显示在当前页面的最后一组中时,会显示EmptyDataTemplate,这是在数据时呈现的来源不包含任何记录。

从您的问题来看,您似乎需要后者。你应该写:

<EmptyDataTemplate>
    <p>Empty text that will be displayed.</p>
</EmptyDataTemplate>