2011-01-04 16 views
8

Wiążę ListView z kolekcją obiektów, która działa poprawnie. Niestety, gdy kolekcja jest pusta, nie otrzymuję tekstu w pustym elemencie EmptyItemTemplate, tak jak się spodziewałam.Widok listy ASP.Net EmptyItemTemplate nie wyświetla się

kod Markup jest

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

Kod za wiązanie jest

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

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

Gdy kolekcja zwraca liczbę zero, wówczas tekst EmptyItemTemplate nie wyświetla. Oglądałem źródło strony i nie jest ono renderowane (a nie ukrywane). Zastąpiłem obiekt DataSource po prostu wartością null, tj.

Tylko do testowania i nadal nie działa. Żaden tekst nie jest ponownie renderowany.

Miałem ten problem na innych stronach, nad którymi pracowałem (i zrezygnowałem z pracy z kludge), więc jest to po prostu coś, czego mi brakuje - robiąc niepoprawnie.

Wszelkie dane wejściowe doceniane

Odpowiedz

23

wygląda jakbyś mylące EmptyItemTemplate, który staje się, gdy nie ma więcej elementów danych do wyświetlenia w ostatniej grupie bieżącej strony, z EmptyDataTemplate, który staje się, gdy dane źródło nie zawiera żadnych rekordów.

Z twojego pytania wynika, że ​​potrzebujesz tego drugiego. Powinieneś napisać:

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

Może to nie będzie renderowanie, jeśli przypiszesz null jako źródło danych. (Nie zapomnij o .DataBind()) Wystarczy użyć 4 linii kodu z góry. – citronas

+0

To było dokładnie to. Wielkie dzięki –

Powiązane problemy