如何让Gridview在没有数据的时候显示表头

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让Gridview在没有数据的时候显示表头相关的知识,希望对你有一定的参考价值。

参考技术A 1.前言
当对GridView控件进行数据绑定时,如果绑定的记录为空,网页上就不显示GridView,造成页面部分空白,页面布局结构也受影响。下面讨论的方法可以让GridView在没有数据记录的时候显示表的字段结构和显示提示信息。
2.数据
为了让GridView显示数据,在数据库中建立表temple,其字段如下:
temple表示庙宇,它的字段有:
temple_id int
temple_name varchar(50)
location varchar(50)
build_date datetime

temple的数据为:

temple_id

temple_name

location

build_time

1

少林寺

河南省登封市嵩山

1900-2-2 0:00:00

2

大杰寺

五龙山

1933-2-3 3:03:03

3

法源寺

宣武门外教子胡同南端东侧

1941-2-3 5:04:03

4

广济寺

阜成门内大街东口

1950-3-3 3:03:03

5

碧云寺

香山东麓

1963-3-3 3:03:03

3.页面
建立一个asp.net网站工程,在页面中添加GridView和几个按钮,代码如下所示:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridView绑定记录为空显示表头测试</title>
</head>
<body>
<form id="form1" runat="server">
<div style="font-size:13px;">
<asp:GridView ID="GridViewEmptyDataTest" runat="server" AutoGenerateColumns="False" EmptyDataText="Data Is Empty"BackColor="White" BorderColor="LightGray" BorderStyle="Double" BorderWidth="3px"
CellPadding="4" GridLines="Horizontal" Width="500px">
<Columns>
<asp:BoundField DataField="temple_id" HeaderText="temple_id" Visible="False" >
</asp:BoundField>
<asp:BoundField DataField="temple_name" HeaderText="名称" >
<ItemStyle BorderColor="LightGray" BorderStyle="Double" BorderWidth="1px" Width="100px" />
</asp:BoundField>
<asp:BoundField DataField="location" HeaderText="地址" >
<ItemStyle BorderColor="LightGray" BorderStyle="Double" BorderWidth="1px" Width="300px" />
</asp:BoundField>
<asp:BoundField DataField="build_date" HeaderText="建设时间" >
<ItemStyle BorderColor="LightGray" BorderStyle="Double" BorderWidth="1px" Width="100px" />
</asp:BoundField>
</Columns>
<FooterStyle BackColor="White" ForeColor="#333333" />
<RowStyle BackColor="White" ForeColor="#333333" />
<SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="CornflowerBlue" Font-Bold="True" ForeColor="White" />
</asp:GridView>
<br />
<asp:Button ID="ButtonHasDataBind" runat="server" Text="有数据绑定" Width="109px"OnClick="ButtonHasDataBind_Click" />
<asp:Button ID="ButtonQueryEmptyBind" runat="server" Text="查询结果为空绑定" Width="142px"OnClick="ButtonQueryEmptyBind_Click" />
<asp:Button ID="ButtonConstructTableBind" runat="server" Text="构造空的DataTable绑定" Width="164px"OnClick="ButtonConstructTableBind_Click" />
<asp:Button ID="ButtonNormalBind" runat="server" Text="普通空数据绑定" Width="127px"OnClick="ButtonNormalBind_Click" /></div>
</form>
</body>
</html>
GridView要绑定的字段和temple的字段一样,在这里我们利用GridView原有的功能,设定当数据为空是显示“Data Is Empty”,如果没有设定EmptyDataText属性,当绑定的记录为空时,GridView将不在页面显示。本回答被提问者和网友采纳

没有记录时如何在gridview“未找到记录”中显示文本

【中文标题】没有记录时如何在gridview“未找到记录”中显示文本【英文标题】:How to display a text in gridview "No Records Found" when there is no record 【发布时间】:2012-12-17 10:26:14 【问题描述】:

我有 iframe,我有几个图表和网格视图,其中图表和网格视图正在从数据库中获取数据。当记录没有发现问题但对于某些用户没有记录的网格视图之一时,我必须显示一条消息“没有找到记录”。

请就此向我提出建议。 我尝试了下面的代码,它显示了一条消息,但它显示在小框中,但我需要在 gridview 中显示。

   <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
   <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
       <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
       <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
 <EditRowStyle BackColor="#999999" />
 <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
  <EmptyDataTemplate>No records Found</EmptyDataTemplate>

这里我没有显示网格标题,但我必须!

【问题讨论】:

【参考方案1】:

将 GridView 上的 ShowHeaderWhenEmpty 属性设置为 true

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.showheaderwhenempty.aspx

但是你仍然需要对gridview 进行DataBind。这段代码 sn-p 对我有用:

    <asp:GridView ID="GridView1" runat="server" ShowHeaderWhenEmpty="True" EmptyDataText="No records Found">
    <Columns>
          <asp:boundfield datafield="CustomerID" headertext="Customer ID"/>
          <asp:boundfield datafield="Name" headertext="Name"/>
    </Columns>
   </asp:GridView>

【讨论】:

【参考方案2】:

尝试设置emptydatatextShowHeaderWhenEmpty

<asp:gridview id="GridView" 
        datasourceid="DataSource" 
        autogeneratecolumns="true"
        emptydatatext="No data in the data source."
        runat="server"
        ShowHeaderWhenEmpty="True">
      </asp:gridview>

【讨论】:

【参考方案3】:

我对 gridview 使用的未找到记录的方法是,当数据库中没有记录时,我清除网格中的所有行并在网格中添加一个新行作为未找到记录的文本,或者您可以为未找到结果创建一个函数,然后在 gridview 的绑定函数中使用它。当没有记录时,您可以调用该函数。

【讨论】:

【参考方案4】:

对于仍在使用 ASP.net 2 或 3.5 的用户,ShowHeaderWhenEmpty 属性不存在。要解决这个问题,只需使用EmptyDataText="..." 属性并让gridview 仅在找到数据时可见(在后面的代码中)。

【讨论】:

以上是关于如何让Gridview在没有数据的时候显示表头的主要内容,如果未能解决你的问题,请参考以下文章

如何在yii2 gridview中为大数据表显示一行中的表头名称

菜鸟提问:如何让GridView的表头内容居中

gridview 表头如何居中

如何设置winform中gridview的表头宽度,及编号

c#winfrom中gridview控件怎样设置让表头不可点击,还有下面点击全选中,还不是点击只显示一个单元格,求助,谢

无记录时显示gridview表头,并增加一行显示“没有记录”绑定SqlDataSource控件时