我正在将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的工作),所以这显然只是我所缺少的 - 做错了。
赞赏任何输入
答案 0 :(得分:25)
看起来你很困惑EmptyItemTemplate,当没有更多的数据项要显示在当前页面的最后一组中时,会显示EmptyDataTemplate,这是在数据时呈现的来源不包含任何记录。
从您的问题来看,您似乎需要后者。你应该写:
<EmptyDataTemplate>
<p>Empty text that will be displayed.</p>
</EmptyDataTemplate>