根据项目需要,提供自定义服务器控件之 GridViewControl,提供数据为空时的自定义显示。
[DefaultProperty("EnableEmptyContentRender")]
[ToolboxData("<{0}:GridViewControl runat=server></{0}:GridViewControl>")]
public class GridViewControl : System.Web.UI.WebControls.GridView
{
    /// <summary>
    /// 是否数据为空时显示标题行
    /// </summary>
    private bool _enableEmptyContentRender = true;
    /// <summary>
    /// 是否数据为空时显示标题行
    /// </summary>
    [Bindable(true)]
    [Category("Appearance")]
    [DefaultValue("")]
    [Localizable(true)]
    public bool EnableEmptyContentRender
    {
        set { _enableEmptyContentRender = value; }
        get { return _enableEmptyContentRender; }
    }
    /// <summary>
    /// 是否数据为空时显示标题行
    /// </summary>
    private string _EmptyDataCellCssClass;
    /// <summary>
    /// 为空时信息单元格样式类
    /// </summary>
    [Bindable(true)]
    [Category("Appearance")]
    [DefaultValue("")]
    [Localizable(true)]
    public string EmptyDataCellCssClass
    {
        set { _EmptyDataCellCssClass = value; }
        get { return _EmptyDataCellCssClass; }
    }
    /// <summary>
    /// 为空时输出内容
    /// </summary>
    /// <param name="writer"></param>
    protected virtual void RenderEmptyContent(HtmlTextWriter writer)
    {
        //Create Header Table
        Table tblHeader = new Table();
        //Copy All Property
        tblHeader.CssClass = this.CssClass;
        tblHeader.GridLines = this.GridLines;
        tblHeader.BorderStyle = this.BorderStyle;
        tblHeader.BorderWidth = this.BorderWidth;
        tblHeader.CellPadding = this.CellPadding;
        tblHeader.CellSpacing = this.CellSpacing;
        tblHeader.HorizontalAlign = this.HorizontalAlign;
        tblHeader.Width = this.Width;
        tblHeader.CopyBaseAttributes(this);
TableRow rowHeader = new TableRow();
        tblHeader.Rows.Add(rowHeader);
        rowHeader.CssClass = "TableHeader";
        //Generate Table Header
        foreach (DataControlField f in this.Columns)
        {
            TableCell cell = new TableCell();
            cell.Text = f.HeaderText;
            rowHeader.Cells.Add(cell);
        }
        TableRow rowBody = new TableRow();
        tblHeader.Rows.Add(rowBody);
        TableCell cellBody = new TableCell();
        cellBody.CssClass = this._EmptyDataCellCssClass;
        if (this.EmptyDataTemplate != null)
            //the second row, use the template
            this.EmptyDataTemplate.InstantiateIn(cellBody);
        else
            //the second row, use the EmptyDataText
            cellBody.Text = this.EmptyDataText;
cellBody.HorizontalAlign = HorizontalAlign.Left;
        cellBody.ColumnSpan = this.Columns.Count;
        rowBody.Cells.Add(cellBody);
        tblHeader.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);
    }
}

转载于:https://blog.51cto.com/qijinchao/263635

ASP.net 自定义服务器控件之 GridViewControl相关推荐

  1. asp.NET自定义服务器控件内部细节系列教程四

    如大家要转载,请保留本人的版权: /* *Description:asp.NET自定义服务器控件内部细节系列教程 *Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.co ...

  2. asp.NET自定义服务器控件内部细节系列教程五

    如大家要转载,请保留本人的版权: /* *Description:asp.NET自定义服务器控件内部细节系列教程 *Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.co ...

  3. asp.NET自定义服务器控件内部细节系列教程一

    如大家要转载,请保留本人的版权: /* *Description:asp.NET自定义服务器控件内部细节系列教程 *Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.co ...

  4. ASP.NET自定义服务器控件

    本文通过创建一个最简单的服务器控件,演示开发服务器端控件的流程. 文章内容整理自MSDN的编程指南,原文地址在文章末尾的资源中. 本文创建一个简单的服务器控件,名为 RedLabel. 它的使用方式为 ...

  5. 演练:开发和使用自定义服务器控件

    更新:2007 年 11 月 此演练演示如何创建和编译自定义 ASP.NET 服务器控件以及如何在页中使用该控件. 通过此演练,您将学会如何执行以下任务: 创建一个 ASP.NET 服务器控件. 向该 ...

  6. 开发和使用自定义服务器控件

    ASP.NET 演练:开发和使用自定义服务器控件 此演练演示如何创建和编译自定义 ASP.NET 服务器控件以及如何在页中使用该控件. 通过此演练,您将学会如何执行以下任务: 创建一个 ASP.NET ...

  7. ASP.NET2.0服务器控件之类型化样式属性

    实现类型化样式属性的方法 继承自Style类的类称为类型化样式.Style类可以由控件开发人员来扩展,创建一个自定义类型化样式,它重写或者添加Style类的属性.服务器控件也可以把自定义类型化样式作为 ...

  8. 【ASP.NET】服务器控件大演练与实例分析

    asp服务器控件 简介(特点):保存视图状态,公共对象模型,简单,用户定制,创建浏览器特定HTML web服务器控件:文本控件(2个) 1) TextBox控件 <asp:TextBox ID= ...

  9. 一起谈.NET技术,ASP.NET2.0服务器控件之类型转换器

    类型转换器是实现自定义服务器控件属性过程中比较重要的内容.本文将对类型转换器的基本概念和实现方法进行介绍. 1. 类型转换器基本概念 类型转换器是自定义服务器控件的辅助性功能实现.它主要用于执行从字符 ...

最新文章

  1. Debug时含有的子元素,在代码里获取不到的问题
  2. 关于IIS和Serv-U在同一台服务器中端口冲突问题
  3. fir.im Weekly - APP 性能监测优化 二三事
  4. 将要改变IT世界的的docker技术是什么?
  5. 基本机器学习面试问题 ---- Company/Industry Specific/Interest
  6. 牛客网【每日一题】5月8日题目精讲 codeJan与旅行
  7. laravel如何生成swagger接口文档
  8. jq fileupload 设置最大文件大小5m_如何在 Linux 服务器上设置 ulimit 和文件描述符数限制 | Linux 中国...
  9. 《Python游戏趣味编程》 第10章 拼图游戏
  10. cosmic中文翻译_cosmic是什么意思,cosmic翻译成中文,英译中-xyz翻译网
  11. Outlook邮箱设置签名
  12. API网关——zuul
  13. android actionBar searchview 默认展开,并且放大镜图标在编辑框内。
  14. ESP32-CAM视频传输至公网服务器并转发视频数据流
  15. 如何查找和阅读综述性的文章
  16. C++ Socket网络编程
  17. gym102028 problem E Resistors in Parallel (大数)
  18. 设置Excel单元格行宽列高
  19. Failed to connect to 127.0.0.1 port 1086: Connection refused
  20. Furucombo被盗1400万美元启示录:切勿过度授权

热门文章

  1. mybatis中的MapperAnnotationBuilder
  2. TaskExecutor设计与实现
  3. Python中的collections
  4. LeetCode Insertion Sort List(单链表插入排序)
  5. HSHA多线程网络编程模型介绍
  6. HDU2016 数据的交换输出
  7. 第四十四章 Django ORM
  8. Loj #2036. 「SHOI2015」自动刷题机
  9. centos出现磁盘坏掉,怎么修复和检测。
  10. 如果当初学习编程时能有人给我这些忠告该多好