VacíaDatAtemplate y vacíaDataText no funciona en GridView
-
24-10-2019 - |
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();
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!