ASP.Net列表视图不显示EmptyItemTemplate

Cra*_*ket 9 .net c# 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>
Run Code Online (Sandbox Code Playgroud)

绑定的代码是

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

        lvListView.DataSource = contactRoles;
        lvListView.DataBind();
Run Code Online (Sandbox Code Playgroud)

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

lvListView.DataSource = null
Run Code Online (Sandbox Code Playgroud)

只是为了测试它,它仍然无法正常工作.没有再次呈现文本.

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

任何输入赞赏

Fré*_*idi 26

看起来你很困惑EmptyItemTemplate,当没有更多数据项要显示在当前页面的最后一组时,使用EmptyDataTemplate进行渲染,当数据源不包含任何记录时,会呈现该数据项.

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

<EmptyDataTemplate>
    <p>Empty text that will be displayed.</p>
</EmptyDataTemplate>
Run Code Online (Sandbox Code Playgroud)

  • 如果将null指定为数据源,则可能无法呈现.(不要忘记.DataBind())只需使用上面的4行代码. (4认同)