2011-01-04 16 views
8

Estoy vinculando un ListView a una colección de objetos que funciona bien. Lamentablemente, cuando la colección está vacía, no obtengo el texto en el elemento EmptyItemTemplate como se esperaba.ASP.Net Vista de lista EmptyItemTemplate no muestra

código de marcado es

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

El código detrás de BIND es

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

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

Cuando la colección devuelve un recuento de cero, entonces el texto EmptyItemTemplate no se muestra. He visto el origen de la página y no se muestra en absoluto (en lugar de estar oculto). He reemplazado el objeto DataSource simplemente con nulo, es decir

lvListView.DataSource = null 

Solo para probarlo y todavía no funciona. Ningún texto procesado nuevamente

He tenido este problema en otras páginas en las que he trabajado (y abandonado y hecho kludge), así que obviamente es algo de lo que me estoy perdiendo, haciendo incorrectamente.

Cualquier entrada apreciado

Respuesta

23

Parece que estás confundiendo EmptyItemTemplate, que se vuelve cuando no hay más elementos de datos para mostrar en el último grupo de la página actual, con EmptyDataTemplate, que se rindió cuando los datos la fuente no contiene ningún registro.

De su pregunta, parece que necesita este último. Debe escribir:

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

Quizás esto no se represente si asigna nulo como fuente de datos. (No olvides .DataBind()) Solo usa las 4 líneas de código de arriba. – citronas

+0

Eso fue exactamente. Muchas gracias –

Cuestiones relacionadas