2011-01-04 8 views
8

Ich binde eine ListView an eine Objektgruppe, die einwandfrei funktioniert. Wenn die Auflistung leer ist, wird der Text im Element "EmptyItemTemplate" leider nicht wie erwartet angezeigt.ASP.Net Listenansicht EmptyItemTemplate wird nicht angezeigt

Markup-Code ist

 <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> 

Der Code hinter zu binden ist

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

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

Wenn die Sammlung eine Zählung von Null zurückgibt dann die EmptyItemTemplate Text nicht angezeigt. Ich habe die Seitenquelle angesehen und sie wird überhaupt nicht gerendert. Ich habe das DataSource-Objekt nur mit Null ersetzt, d. H.

lvListView.DataSource = null 

Nur um es zu testen und es funktioniert immer noch nicht. Kein Text mehr gerendert.

Ich hatte dieses Problem auf anderen Seiten, an denen ich gearbeitet habe (und aufgegebene und kluge Arbeit herum), so ist es offensichtlich nur etwas, das ich vermisse - falsch zu tun.

Jede Eingabe geschätzt

Antwort

23

Es sieht aus wie Sie EmptyItemTemplate sind verwirrend, was gemacht wird, wenn es keine weiteren Datenelemente sind in der letzten Gruppe der aktuellen Seite angezeigt werden, mit EmptyDataTemplate, die gemacht wird, wenn die Daten Quelle enthält keine Datensätze.

Von Ihrer Frage scheint es, dass Sie die letztere benötigen. Sie sollten schreiben:

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

Vielleicht wird dies nicht gerendert, wenn Sie null als Datenquelle zuweisen. (Vergessen Sie nicht die .DataBind()) Verwenden Sie einfach die 4 Zeilen Code von oben. – citronas

+0

Das war es genau. Danke vielmals –