扩展:gridview 空数据时显示表头

2015年7月14日16:50:06  Gridview 默认展示数据时,若数据为空,则表格不显示,显示不美观。

针对此问题进行扩展:

using System.Web.UI.WebControls;

public static class GridViewExtension
{
    public static void BindEmptyData(this GridView g)
    {
        if (g.Rows.Count == 0)
        {
            //表头的设置
            GridViewRow row = new GridViewRow(-1, -1, DataControlRowType.EmptyDataRow, DataControlRowState.Normal);
            foreach (DataControlField field in g.Columns)
            {
                TableCell cell = new TableCell();
                cell.Text = field.HeaderText;
                cell.Width = field.HeaderStyle.Width;
                cell.Height = field.HeaderStyle.Height;
                cell.ForeColor = field.HeaderStyle.ForeColor;
                cell.Font.Size = field.HeaderStyle.Font.Size;
                cell.Font.Bold = field.HeaderStyle.Font.Bold;
                cell.Font.Name = field.HeaderStyle.Font.Name;
                cell.Font.Strikeout = field.HeaderStyle.Font.Strikeout;
                cell.Font.Underline = field.HeaderStyle.Font.Underline;
                cell.BackColor = field.HeaderStyle.BackColor;
                cell.VerticalAlign = field.HeaderStyle.VerticalAlign;
                cell.HorizontalAlign = field.HeaderStyle.HorizontalAlign;
                cell.CssClass = field.HeaderStyle.CssClass;
                cell.BorderColor = field.HeaderStyle.BorderColor;
                cell.BorderStyle = field.HeaderStyle.BorderStyle;
                cell.BorderWidth = field.HeaderStyle.BorderWidth;
                row.Cells.Add(cell);
            }
            TableItemStyle headStyle = g.HeaderStyle;
            TableItemStyle emptyStyle = g.EmptyDataRowStyle;
            emptyStyle.Width = headStyle.Width;
            emptyStyle.Height = headStyle.Height;
            emptyStyle.ForeColor = headStyle.ForeColor;
            emptyStyle.Font.Size = headStyle.Font.Size;
            emptyStyle.Font.Bold = headStyle.Font.Bold;
            emptyStyle.Font.Name = headStyle.Font.Name;
            emptyStyle.Font.Strikeout = headStyle.Font.Strikeout;
            emptyStyle.Font.Underline = headStyle.Font.Underline;
            emptyStyle.BackColor = headStyle.BackColor;
            emptyStyle.VerticalAlign = headStyle.VerticalAlign;
            emptyStyle.HorizontalAlign = headStyle.HorizontalAlign;
            emptyStyle.CssClass = headStyle.CssClass;
            emptyStyle.BorderColor = headStyle.BorderColor;
            emptyStyle.BorderStyle = headStyle.BorderStyle;
            emptyStyle.BorderWidth = headStyle.BorderWidth;
            //空白行的设置
            GridViewRow row1 = new GridViewRow(0, -1, DataControlRowType.EmptyDataRow, DataControlRowState.Normal);

            TableCell cell1 = new TableCell();

            cell1.Text = "没有任何数据可以显示";
            cell1.ForeColor = System.Drawing.Color.Purple;
            cell1.BackColor = System.Drawing.Color.White;
            row1.Cells.Add(cell1);
            cell1.ColumnSpan = g.Columns.Count;

            if (g.Controls.Count == 0)
            {
                g.Page.Response.Write("<script language=‘javascript‘>alert(‘请先调用GridView的BindData()方法后 调用此扩展方法!‘);</script>");
            }
            else
            {
                g.Controls[0].Controls.Clear();
                g.Controls[0].Controls.AddAt(0, row);
                g.Controls[0].Controls.AddAt(1, row1);
            }
        }
    }
}

代码调用方式如下:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindData();
        }
    }

    protected void BindData()
    {
        this.grid_PlantVarietyRight.DataBind();
        this.grid_PlantVarietyRight.BindEmptyData();

    }

显示效果如下图

本扩展主要参考  http://www.cnblogs.com/muer/archive/2010/03/26/1697178.html  稍作扩展,感谢这位哥。

时间: 2024-07-30 19:02:36

扩展:gridview 空数据时显示表头的相关文章

137在搜索框中实现下拉列表效果(扩展知识:表格视图数据源为空数据时显示提示信息)

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 #import "DropDownListViewController.h" 3 4 @interface ViewController : UITableViewController<UISearchBarDelegate, PassValueDelegate> 5 @property (strong, nonatomic) UISearchBar *sear

实现easyui datagrid在没有数据时显示相关提示内容

本示例实现easyui datagrid加载/查询数据时,如果没有相关记录,则在datagrid中显示没有相关记录的提示信息,效果如下图所示 本实例要实现如下图所示的效果: 本示例easyui版本为1.3.4,如果运行后没有效果,自己检查easyui版本 不同版本对appendRow和mergeCells支持不一样,参数不一致什么的. 无法隐藏分页导航容器,可以用chrome开发工具或者firebug查看分页导航容器的样式和原始datagrid table表格的关系. 源代码如下 $(funct

20140509-MySQL导入脚本文件,插入数据时显示乱码的解决办法

20140509-MySQL导入脚本文件,插入数据时显示乱码的解决办法 打开CMD输入以下命令: mysql –u root –p 然后输入密码: 在导入脚本文件之前,对字符编码进行设置: charset gbk; 说明:上面的这条语句非常关键,这样不论你在cmd窗口,还是使用客户端输入中文,都能够正确保存了. 建议初学者不要使用SQLyog或者Navicat Premium等客户端连接工具.

操作Oracle数据库,插入数据时显示:ORA-00984列在此处不允许错误

操作Oracle数据库,插入数据时显示:ORA-00984列在此处不允许错误,如下图所示: 出现的原因是由于,在插入字符或字符串型字段时.如果插入的数据是纯数字,则不会有错误:如果出现字符,则会报ORA-00984列在此处不允许异常. 可以创建TestUser表,如下: create table TestUser ( usercode char(5), username varchar2(20) ) 以下例子请注意第一个字段usercode的值 1.正常例子:usercode为纯数字.可以正常插

UWP GridView切换数据时界面闪动

在选择数据时,比如1-10集,和11-20集切换时,GridView需要切换对应的数据,但是会发生界面闪动. 这是默认的Item Transition导致的. 可以去掉默认的转换效果. <GridView.ItemContainerTransitions> <TransitionCollection> <!--<RepositionThemeTransition/>--> </TransitionCollection> </GridView

hive命令查询数据不显示表头解决办法

在hive命令行中查询数据如下: 表头未显示出来 解决办法: 修改hive安装包conf/hive-site.xml配置文件: <property> <name>hive.cli.print.header</name> <value>true</value> <description>Whether to print the names of the columns in query output.</description&g

关于EasyUI 1.5版Datagrid组件在空数据时无法显示&quot;空记录&quot;提示的BUG解决方法

https://www.cnblogs.com/baiyangyuanzi/p/6514913.html 问题:jQuery easyUI中Datagrid,在表格数据加载无数据的时候,如何显示“无记录”的提示语? 解决jQuery EasyUI 1.5.1版本的Datagrid,在处理新增表格加载的数据没有记录的时候,可显示“无记录”的提示语的方法. 官网的API更新里面并没有写明是API的属性名,经过查找资料,发现一下问题: 1.官网API更新的时候漏掉了该API,没有放出: 2.源代码需要

android 加载数据或提交数据时显示转圈的提示页面

提前声明一下,本博客全是自己的理解,如果内容中有理解错误的地方,欢迎指正.另外,博客内容有参考其他博客,本博客只用来学习. 当我们进入到一个页面时,通常先会出现一个转圈的dialog,这是因为这个页面需要加载数据,为了防止数据加载完成前空白的页面,通常会先显示转圈的dialog,直到数据加载完成,圈消失.那么,这个转圈的dialog是怎么实现的呢? 首先,先写 显示转圈的layout:progress_hud.xml <span style="font-size:14px;"&g

viewPager使用时加载数据时显示IllegalStateException异常,解决不了。。。。

从newsPager中得到newsDetailTitles标题的详细内容,这是通过构造器传过来的.打印日志78行能打印,45行打印出来共size是12.但是程序出现了异常java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged. 从网上查询的结果是adapter中的数