EmptyDataTemplate et EmptyDataText ne fonctionne pas dans GridView
-
24-10-2019 - |
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();
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!