数据源为空时如何让GridView显示表头和提示

时间:2010-03-03 12:20:04  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:没有任何控件。你可以在表头显示出来的时候,拷贝表头部分的html,然后放到EmptyDataTemplate里面。   缺点: 麻烦,每个GridVIew都需要设置一下.   方法二: 若数据源为DataTable,则当无数据时,始终返回一个空行的DataTable;   若数据源是集合类(ArrayList,List<T>等),无数据时,生成一个空的实体,加入到集合类中.  &nbs...
  正文:问题:ASP/ target=_blank class=infotextkey>asp.net 2.0 中引入的GridView控件当其数据源为空时(GridView.DataSource=null)不能显示出表头.
  解决:
  方法一:采用其EmptyTemplate来实现,模版中写一个静态的table;
  如果你的表头只是html的文本,没有任何控件。你可以在表头显示出来的时候,拷贝表头部分的html,然后放到EmptyDataTemplate里面。
  缺点: 麻烦,每个GridVIew都需要设置一下.
  方法二: 若数据源为DataTable,则当无数据时,始终返回一个空行的DataTable;
  若数据源是集合类(ArrayList,List<T>等),无数据时,生成一个空的实体,加入到集合类中.
  缺点: 还是麻烦.
  方法三:
  也是要给大家介绍的方法: 扩展GridView来实现.继承GridVie,重写Render方法,当其数据源为空时做一下处理,直接看代码吧:
  
   /// <summary>
   /// GridView 扩展控件
   /// @author:jianyi0115@163.com
   /// </summary>
   public class GridView : System.Web.UI.WebControls.GridView
   {
   private bool _enableEmptyContentRender = true ;
   /// <summary>
   /// 是否数据为空时显示标题行
   /// </summary>
   public bool EnableEmptyContentRender
   {
   set { _enableEmptyContentRender = value; }
   get { return _enableEmptyContentRender; }
   }
  
   private string _EmptyDataCellCssClass ;
   /// <summary>
   /// 为空时信息单元格样式类
   /// </summary>
   public string EmptyDataCellCssClass
   {
   set { _EmptyDataCellCssClass = value ; }
   get { return _EmptyDataCellCssClass ; }
   }
  
   /// <summary>
   /// 为空时输出内容
   /// </summary>
   /// <param name="writer"></param>
   protected virtual void RenderEmptyContent(HtmlTextWriter writer)
   {
   Table t = new Table(); //create a table
   t.CssClass = this.CssClass; //copy all property
   t.GridLines = this.GridLines;
   t.BorderStyle = this.BorderStyle;
   t.BorderWidth = this.BorderWidth;
   t.CellPadding = this.CellPadding;
   t.CellSpacing = this.CellSpacing;
  
   t.HorizontalAlign = this.HorizontalAlign;
  
   t.Width = this.Width;
  
   t.CopyBaseAttributes(this);
  
   TableRow row = new TableRow();
   t.Rows.Add(row);
  
   foreach (DataControlField f in this.Columns) //generate table header
   {
   TableCell cell = new TableCell();
  
   cell.Text = f.HeaderText;
  
   cell.CssClass = "TdHeaderStyle1"; //这里把表头样式写死了
  
   row.Cells.Add(cell);
   }
  
   TableRow row2 = new TableRow();
   t.Rows.Add(row2);
  
   TableCell msgCell = new TableCell();
   msgCell.CssClass = this._EmptyDataCellCssClass;
  
   if (this.EmptyDataTemplate != null) //the second row, use the template
   {
   this.EmptyDataTemplate.InstantiateIn(msgCell);
   }
   else //the second row, use the EmptyDataText
   {
   msgCell.Text = this.EmptyDataText;
   }
  
   msgCell.HorizontalAlign = HorizontalAlign.Center;
"数据源为空时如何让GridView显示表头和提示"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13009.html


关键字:

关于《数据源为空时如何让GridView显示表头和提示》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td