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

2009-07-22 14:55:49 作者:做人要厚道 来源:做人要厚道VB 浏览次数:0 网友评论 0



                    



                问题:asp.net 2.0 中引入的GridView控件当其数据源为空时(GridView.DataSource=null)不能显示出表头.
  解决:
  方法一:采用其EmptyTemplate来实现,模版中写一个静态的 ...
问题: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;
msgCell.ColumnSpan = this.Columns.Count;

row2.Cells.Add(msgCell);

t.RenderControl(writer);
}

protected override void Render(HtmlTextWriter writer)
{
if ( _enableEmptyContentRender && ( this.Rows.Count == 0 || this.Rows[0].RowType == DataControlRowType.EmptyDataRow) )
{
RenderEmptyContent(writer);
}
else
{
base.Render(writer);
}
}

}
} 数据源为空时如何让GridView显示表头和提示[转]是www1098t.com的会员在VB.NET最新发表的,同时也欢迎你就数据源为空时如何让GridView显示表头和提示[转]提问.欢迎来到我们的服务器编程网站查询表头,数据源,提示的文章.

[错误报告] [推荐] [收藏] [打印] [关闭] [返回顶部]

  • 验证码:

最新图片文章

最新文章