Question

Je ne peux pas sembler obtenir soit EmptyDataTemplate ou EmptyDataText d'un GridView au travail.

Je suis aller chercher le contenu de GridView dans de codebehind et de les attacher à l'utilisation DataBind(). Je l'ai essayé de les avoir comme null et comme List vide, et dans les deux cas, le texte que je mets dans EmptyDataTemplate ou EmptyDataText n'est pas affiché.

Qu'est-ce que je fais mal?

EDIT (Extrait de code)

Ceci est mon GridView:

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

Et j'ai essayé ces deux pour lier les données:

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

grid.DataSource = null;
grid.DataBind();
Était-ce utile?

La solution

Ce problème est dû à l'utilisation que l'on appelle CSS-Friendly adaptateurs de contrôle . Avec leur a permis (et ils semblent être activés par défaut), et EmptyDataTemplate EmptyDataText ne fonctionnent pas comme prévu.

Pour désactiver les adaptateurs, allez dans le dossier App_Browsers, et dans le fichier CSSFriendlyAdapters.browser, commentez la section suivante (ou la section relative à la commande que vous utilisez):

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

Le gros problème est les styles vont disparaître.

Autres conseils

je suis tombé sur un problème similaire et remarqué que j'avais logique autour de mon DataBind d'ignorer la méthode de liaison de données si mon vide était source de données.

Le EmptyDataTemplate supplante toute EmptyDataText, il pourrait être que vous avez défini le modèle de manière incorrecte en quelque sorte, ce qui vous empêche de voir la EmptyDataText.

Si vous lier une liste vide à l'GridView, il doit afficher le EmptyDataText, tant que vous ne disposez pas d'un conflit EmptyDataTemplate, par exemple.

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

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

Êtes-vous en train de faire quelque chose de différent que cela?

Can utilisateur vide Modèle de données .....

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

Et ne pas faire ce que je faisais - La propriété GridView ForeColor n'a pas été serties et blanc par défaut qui était aussi ma propriété BackColor!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top