Pregunta

Parece que no puedo conseguir tampoco EmptyDataTemplate o EmptyDataText de GridView trabajar.

Estoy buscando el GridView contenido en de codebehind y adjuntarlos con el uso DataBind(). He intentado tenerlos como null y como un vacío List, y en ambos casos el texto que puse EmptyDataTemplate o EmptyDataText no se muestra.

¿Qué estoy haciendo mal?

EDITAR (Fragmento de código)

Esta es mi GridView:

<asp:GridView ID="grid" runat="server" EmptyDataText="EMPTY">
</asp:GridView>

Y he probado estos dos para vincular los datos:

grid.DataSource = new List<object>();
grid.DataBind();

grid.DataSource = null;
grid.DataBind();
¿Fue útil?

Solución

Este problema es causado por el uso de la llamada Adaptadores de control amigables con CSS. Con ellos habilitados (y parecen estar habilitados de forma predeterminada), EmptyDataTemplate y EmptyDataText No funcione como se esperaba.

Para deshabilitar los adaptadores, vaya al App_Browsers carpeta, y en el CSSFriendlyAdapters.browser Archivo, comente la siguiente sección (o la sección relacionada con el control que está utilizando):

<adapter controlType="System.Web.UI.WebControls.GridView"
               adapterType="CSSFriendly.GridViewAdapter" />

El gran problema es que los estilos desaparecerán.

Otros consejos

Me encontré con un problema similar y noté que tenía una lógica en torno a mi Databind para ignorar el método de databinding si mi fuente de datos estaba vacío.

los EmptyDataTemplate anulará cualquiera EmptyDataText, por lo que podría ser que hayas definido la plantilla incorrectamente de alguna manera, lo que te impide ver el EmptyDataText.

Si está vinculando una lista vacía a GridView, debe mostrar el EmptyDataText, siempre y cuando no tengas un conflicto EmptyDataTemplate, p.ej

<%-- GridTest.ascx --%>
<asp:GridView ID="Grid" runat="server" EmptyDataText="No Data!" />

// GridTest.ascx.cs
Grid.DataSource = new List<object>();
Grid.DataBind();

¿Estás haciendo algo diferente a esto?

¿Puede la plantilla de datos vacías del usuario .....

    <Columns>
             ............
             ............
             ............
    <Columns>
<EmptyDataTemplate>
        <asp:Label ID="lblEmptyTxt" runat="server" Text="No Data"></asp:Label>
      </EmptyDataTemplate>
                        </asp:GridView>

Y no hagas lo que hice: la propiedad de Forecolor de GridView no estaba configurada y es predeterminado a White, que también era mi propiedad de backcolor!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top