Improve company productivity with a Business Account.Sign Up


GridView not showing contents of EmptyDataTemplate and grid headers at same time

Posted on 2013-01-29
Medium Priority
Last Modified: 2013-11-19

I have a gridview with multiple columns ecah defined within an <asp:TemplateField> tag.  Now when I have no rows returned from my DB  I want my grid to retain its headers but also show the "No Rows Returned" message.

Normally I do this by binding a single empty object within an array as my returned results as follows:

if (list == null || list.Length == 0)
      list = new MyGridListItem[] { new MyGridListItem() };

 return list;

But for some reason when I do this I seeing my grid headers and then an empty row in the grid instead of the "No Rows Returned" message??  If I simply return null from this method then I get my message but no grid headers.

Has anyone any idea whay this should be?

Many thanks
Question by:Samanthaoneill1502
LVL 20

Expert Comment

by:Obadiah Christopher
ID: 38831556
LVL 41

Expert Comment

ID: 38831795
Check this:

Why it's doing that is because EmptyDataItemTemplate is shown if the datasource is null. Since you array with one item, it's not considered empty.
LVL 10

Accepted Solution

Monica P earned 2000 total points
ID: 38834180
Checkout like this

<asp:GridView ID="gvdata" runat="server" CssClass="Gridview" AutoGenerateColumns="false" HeaderStyle-BackColor="#7779AF" HeaderStyle-ForeColor="White">
<asp:BoundField DataField="UserName" HeaderText="Name"/>
<asp:BoundField DataField ="FirstName" HeaderText="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" />
<asp:BoundField DataField="Location" HeaderText="Location" />

Open in new window

protected void BindGridviewData()
SqlConnection con = new SqlConnection("Data Source=xxx;Initial Catalog=testDB;Integrated Security=True");
SqlCommand cmd = new SqlCommand("select UserName,FirstName,LastName,Location from UserDetails", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
gvdata.DataSource = ds;
int columncount = gvdata.Rows[0].Cells.Count;
gvdata.Rows[0].Cells.Add(new TableCell());
gvdata.Rows[0].Cells[0].ColumnSpan = columncount;
gvdata.Rows[0].Cells[0].Text = "No Records Found";
gvdata.DataSource = ds;

Open in new window


Author Closing Comment

ID: 38838811
This worked perfectly for my situation.  Many thanks much appreciated.

Featured Post

Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

How do you create a user-centered user experience on your website? And what are some things you should consider in the process?
Native ability to set a user account password via AD GPO was removed because the passwords can be easily decrypted by any authenticated user in the domain. Microsoft recommends LAPS as a replacement and I have written an article that does something …
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

595 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question