I can't seem to get either EmptyDataTemplate
or EmptyDataText
of a GridView
to work.
I'm fetching the GridView
contents in de codebehind and attaching them with using DataBind()
. I've tried having them as null
and as an empty List
, and in both cases the text I put into EmptyDataTemplate
or EmptyDataText
is not displayed.
What am I doing wrong?
EDIT (Code snippet)
This is my GridView:
<asp:GridView ID="grid" runat="server" EmptyDataText="EMPTY">
</asp:GridView>
And I've tried these two for binding the data:
grid.DataSource = new List<object>();
grid.DataBind();
grid.DataSource = null;
grid.DataBind();
Can User Empty Data Template.....
I ran into a similar problem and noticed I had logic around my DataBind to ignore the databinding method if my datasource was empty.
And don't do what I did - The GridView ForeColor property wasn't set and it defaults to white which was also my BackColor property!
This problem is caused by using the so-called CSS-Friendly Control Adapters. With them enabled (and they seem to be enabled by default),
EmptyDataTemplate
andEmptyDataText
don't work as expected.To disable the adapters, go to the
App_Browsers
folder, and in theCSSFriendlyAdapters.browser
file, comment out the following section (or the section related to the control you're using):The big problem is the styles will go away.
The
EmptyDataTemplate
will override anyEmptyDataText
, so it could be that you've defined the template incorrectly somehow, which is keeping you from seeing theEmptyDataText
.If you're binding an empty list to the GridView, it should display the
EmptyDataText
, so long as you don't have a conflictingEmptyDataTemplate
, e.g.Are you doing something different than this?