如何让Gridview在没有数据的时候显示表头_第1页
如何让Gridview在没有数据的时候显示表头_第2页
如何让Gridview在没有数据的时候显示表头_第3页
如何让Gridview在没有数据的时候显示表头_第4页
如何让Gridview在没有数据的时候显示表头_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、mple namelocati onbuild time1少林寺河南省登封市嵩山1900-2-2 0:00:002大杰寺五龙山1933-2-3 3:03:033法源寺宣武门外教子胡冋南端东侧1941-2-3 5:04:034广济寺阜成门内大街东口1950-3-3 3:03:035碧云寺香山东麓1963-3-3 3:03:033 .页面建立一个asp. net网站工程,在页面中添加GridView和几个按钮,代码如下所示:<%PageLanguage="C#" AutoEventWireup ="true" CodeFile ="Defau

3、lt.aspx.cs" Inherits ="_Default" %><! DOCTYRfimlPUBLIC"-/W3C/DTD XHTML 1.0Transitional/EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns ="/1999/xhtml"><headrunat ="server"><title >

4、;GridView绑定记录为空显示表头测试 </title ></head><body>< form id ="form1" runat ="server">< div style ="font-size:13px;">< asp : GridView ID ="GridViewEmptyDataTest" runat ="server" AutoGenerateColumns ="False" EmptyDa

5、taText ="Data IsEmpty" BackColor="White"BorderColor="LightGray" BorderStyle="Double" BorderWidth ="3px"CellPadding ="4"GridLines="Horizontal"Width ="500px">< Columns >< asp : BoundFieldDataField="temple_

6、id"HeaderText ="temple_id"Visible ="False"></ asp : BoundField><asp: BoundField DataField ="temple_name" HeaderText ="名称 ">< ItemStyle BorderColor="LightGray"BorderStyle="Double"BorderWidth="1px"Width ="

7、;100px"/></ asp : BoundField ><asp: BoundField DataField="location" HeaderText ="地址 ">< ItemStyle BorderColor="LightGray"BorderStyle="Double"BorderWidth="1px"Width ="300px"/></ asp : BoundField ><asp: Boun

8、dField DataField="build_date"HeaderText =" 建设时间 ">< ItemStyle BorderColor="LightGray"BorderStyle="Double"BorderWidth="1px"Width ="100px"/></ asp : BoundField ></ Columns >< FooterStyle BackColor ="White" Fo

9、reColor ="#333333"/>< RowStyle BackColor ="White" ForeColor ="#333333"/>< SelectedRowStyle BackColor ="#339966"Font-Bold ="True" ForeColor ="White"/>< PagerStyle BackColor ="#336666" ForeColor ="White"

10、HorizontalAlign ="Center"/>< HeaderStyle BackColor ="CornflowerBlue"Font-Bold ="True" ForeColor ="White"/></ asp : GridView >< br/><asp: Button ID="ButtonHasDataBind" runat ="server" Text =" 有数据绑定" Width =&

11、quot;109px" OnClick ="ButtonHasDataBind_Click"/><asp: Button ID="ButtonQueryEmptyBind" runat ="server" Text =" 查询结果为空绑定" Width ="142px" OnClick ="ButtonQueryEmptyBind_Click"/><asp: Button ID="ButtonConstructTableBind&q

12、uot; runat ="server" Text =" 构造空的 DataTable 绑定" Width ="164px" OnClick ="ButtonConstructTableBind_Click"/><asp: Button ID="ButtonNormalBind" runat ="server" Text =" 普通空数据绑定" Width ="127px" OnClick ="ButtonNorm

13、alBind_Click"/></div ></ form ></ bodyv/html >GridView 要绑定的字段和 temple 的字段一样,在这里我们利用GridView 原有的功能,设定当数据为空是显示"Data Is Empty ”,如果没有设定 EmptyDataText 属性,当绑定 的记录为空时,GridView 将不在页面显示。4 数据显示编写 ButtonNormalBind4 . 1普通空记录显示的事件函数ButtonNormalBind_Click,添加如下代码,来测试没有经过处理的 GridView显

14、示情况:protectedvoid ButtonNormalBind_Click( object sender, EventArgs e)DataTable dt = new DataTable ();dt.Colum ns.Add(dt.Colum ns.Add(dt.Colum ns.Add(dt.Colum ns.Add("temple_id"); "temple_ name");"locatio n"); "build_date");this .GridViewEmptyDataTest.DataSourc

15、e = dt;this .GridViewEmptyDataTest.DataBind();执行这些代码后,GridView显示结果如下图所一Data Is Empty示:可以看到这样简单的提示看不岀GridView的结构来,在大多数的实际应用中我们希望看到GridView到底有哪些字段。4 . 2增加空行来显示GridView 的结构我们知道只要 GridView 绑定的DataTable 有一行记录,GridView 就会显示表头,所以当DataTable为空时我们增加一个空行从而显示表头。我们把代码改成如下所示:DataTable dt = newDataTable ();dt.Colu

16、m ns.Add("temple_id");dt.Colu mn s.Add("temple_ name");dt.Colu mn s.Add("locatio n");dt.Colum ns.Add("build_date");if (dt.Rows.Cou nt = 0)dt.Rows.Add(dt.NewRow();this .GridViewEmptyDataTest.DataSource = dt;this .GridViewEmptyDataTest.DataBind();在每次绑定前判断,如果为空就增

17、加一空行,这样绑定的结果如下图所示:1名称地址建设时1可I可以看得表头已经可以显示了,但是显示的空行没有任何数据也让人费解,可不可以增加一下提示信息呢?4 . 3增加空记录提示我们在数据绑定后增加一些代码对GridView进行一下处理,让显示结果更友好。在this .GridViewEmptyDataTest.DataBind();后面增加代码如下所示:int columnCount = dt.Columns.Count;GridViewEmptyDataTest.RowsO.Cells.Clear();GridViewEmptyDataTest.RowsO.Cells.Add(new Tab

18、leCell ();GridViewEmptyDataTest.RowsO.CellsO.Colu mn Spa n = colum nCou nt;GridViewEmptyDataTest.Rows0.Cells0.Text ="没有记录”;GridViewEmptyDataTest.Rows0.Cells0.Style.Add("text-align" , "center");改良后的显示结果如下图所示:名琢地址建设时闾没有记录看来显示结果已经达到了我们的要求,但是当页面上有其他按钮操作导致页面PostBack时,页面再次显示确没有了提示

19、信息变成如下图所示的样子:名称地址建设时间这并不是我们想要的4 . 4防止PostBack时页面显示变化为了防止显示改变我们在Page_Load事件里添加如下代码,从而重新绑定GridViewif (IsPostBack)/ 如果数据为空则重新构造 Gridviewif (GridViewEmptyDataTest.Rows.Count = 1 &&GridViewEmptyDataTest.Rows0.Cells0.Text = "没有记录 ")int columnCount = GridViewEmptyDataTest.Columns.Count;Gr

20、idViewEmptyDataTest.Rows0.Cells.Clear();GridViewEmptyDataTest.Rows0.Cells.Add( new TableCell ();GridViewEmptyDataTest.Rows0.Cells0.ColumnSpan =columnCount;GridViewEmptyDataTest.Rows0.Cells0.Text =" 没有记录 "GridViewEmptyDataTest.Rows0.Cells0.Style.Add( "text-align" ,"center&quo

21、t; );这下我们的控件终于可以按我们的要求显示了, 但是为了代码的重用, 当一个项目里有多个 GridView 时,避免充分些相同的代码, 我们需要把代码封装成类, 从而让所有的 GridView 数 据绑定时都可以轻易地实现我们的要求。4 5 封装类的封装代码如下所示:using System.Data ;using System.Web.UI.WebControls ;/<summary>/ Gridview 绑定的数据记录为空时显示 Gridview 的表头,并显示没有记录的提示/</summary>publicclass GridviewControl/ 当

22、Gridview 数据为空时显示的信息privatestaticstring EmptyText = " 没有记录 "public GridviewControl()/<summary>/ 防止 PostBack 后 Gridview 不能显示/</summary>/<param name="gridview"></param>publicstaticvoid ResetGridView( GridView gridview)/ 如果数据为空则重新构造 Gridviewif (gridview.Rows.C

23、ount = 1 && gridview.Rows0.Cells0.Text = EmptyText)int columnCount = gridview.Columns.Count;gridview.Rows0.Cells.Clear();gridview.Rows0.Cells.Add( new TableCell (); gridview.Rows0.Cells0.ColumnSpan = columnCount; gridview.Rows0.Cells0.Text = EmptyText; gridview.Rows0.Cells0.Style.Add( "

24、text-align" , "center" );/<summary>/ 绑定数据到 GridView ,当表格数据为空时显示表头/</summary>/<param name="gridview"></param>/<param name="table"></param>publicstaticvoid GridViewDataBind( GridView gridview, DataTable table)/ 记录为空重新构造 Gridviewif

25、(table.Rows.Count = 0)table = table.Clone();table.Rows.Add(table.NewRow();gridview.DataSource = table;gridview.DataBind();int columnCount = table.Columns.Count;gridview.Rows0.Cells.Clear();gridview.Rows0.Cells.Add( new TableCell (); gridview.Rows0.Cells0.ColumnSpan = columnCount; gridview.Rows0.Cells0.Text = EmptyText; gridview.Rows0.Cells0.Style.Add( "text-align&quo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论