Asp.net 2.0 自定义控件开发[创建自定义HeaderRow的GridView控件][示例代码下载]

news/2024/7/8 6:58:20

 (一).  概述

        1. 做了个GridViewExtend自定义控件, 通过注册扩展自定义表头事件,  可以任意设置Header的格式.

        2. 易重用代码, 只要将ExtendGridView.dll 文件添加到项目引用即可. 

实现原理:增加一个自定义事件,并将GridView(HeaderRow)引用作为事件参数传递,使用时通
过注册此事件来自定义头的布局,可以任意定制HeaderRow行数.

(二). 运行截图

(三). 使用步骤

     1. 将ExtendGridView.dll 添加到自己的Web站点中, 并在设计器中添加一个GridViewExpendHeader控件.

    2. 注册事件, 如图

     

      3. 在后台代码事件中编写重构GridView's HeaderRow的事件

(四). 完整代码

   1. 主控件类GridViewExpend.cs代码

 1  ///  
 2     /// Author: ChengKing(ZhengJian)
 3     /// 

 4      [ToolboxData( " <{0}:GridViewExpendHeader runat=server> " )]
 5       public   class  GridViewExpendHeader : GridView 
 6      {       
 7          [Description( " 当需要重新构造Header时触发此事件 " )]
 8           public   event  System.EventHandler RebuildHeader;
 9 
10           protected   override   void  Render(HtmlTextWriter writer)
11          {
12              OnRebuildHeader();       
13             
14               base .Render(writer);
15          }
16           protected   override   void  CreateChildControls()
17          {
18               base .CreateChildControls();            
19          }
20      
21           protected   virtual   void  OnRebuildHeader()
22          {
23               // 重新构造Head
24               if  (RebuildHeader  !=   null )
25              {
26                  RebuildHeaderEventArgs args  =   new  RebuildHeaderEventArgs();
27                  args.GridViewObject  =   this ;
28                  args.HeaderRowObject  =   this .HeaderRow;
29 
30                  RebuildHeader( this , args);
31              }
32          }       
33      } 

  2. RebuildHeaderEventArgs.cs 文件代码

 1    ///  
 2     /// 承载重构Header事件所需的参数[Author:ChengKing(ZhengJian)]
 3     /// 

 4       public   class  RebuildHeaderEventArgs : EventArgs
 5      {
 6           private  GridViewExpendHeader _GridViewObject;
 7           private  GridViewRow _HeaderRowObject;
 8 
 9           ///  
10         /// 存储GrivViewExtend对象本身
11         /// 

12           public  GridViewExpendHeader GridViewObject
13          {
14               get
15              {
16                   return  _GridViewObject;
17              }
18               set
19              {
20                  _GridViewObject  =  value;
21              }
22          }
23 
24           ///  
25         /// 存储GrivViewExtend的HeaderRow对象
26         /// 

27           public  GridViewRow HeaderRowObject
28          {
29               get
30              {
31                   return  _HeaderRowObject;
32              }
33               set
34              {
35                  _HeaderRowObject  =  value;
36              }
37          }
38      }

  3. 页面测试文件: default.aspx文件代码

 1  < body >
 2       < form id = " form1 "  runat = " server " >
 3       < div  class = " a " >
 4           < cc1:GridViewExpendHeader id = " GridViewExpend1 "  runat = " server "  BackColor = " White "  BorderColor = " #3366CC "  BorderStyle = " None "  BorderWidth = " 1px "  CellPadding = " 4 "  OnRebuildHeader = " GridViewExpend1_RebuildHeader "   >
 5               < FooterStyle BackColor = " #99CCCC "  ForeColor = " #003399 "   />
 6               < RowStyle BackColor = " White "  ForeColor = " #003399 "   />
 7               < SelectedRowStyle BackColor = " #009999 "  Font - Bold = " True "  ForeColor = " #CCFF99 "   />
 8               < PagerStyle BackColor = " #99CCCC "  ForeColor = " #003399 "  HorizontalAlign = " Left "   />
 9               < HeaderStyle BackColor = " #003399 "  Font - Bold = " True "  ForeColor = " #CCCCFF "   />
10               < AlternatingRowStyle BackColor = " Lavender "   />
11           cc1:GridViewExpendHeader>
12         
13      div>
14      form>
15  body>

  4. 后台重构HeaderRow事件代码

 1 /// 
 2    /// 具体重写方法, 此方法比较灵活, 可以任意设置您需要创建的格式, 比如更复杂的表格
 3    /// 另外, 可以直接从第二个参数中取得控件对象引用
 4    /// 

 5    /// 
 6    /// 

 7      protected   void  GridViewExpend1_RebuildHeader( object  sender, EventArgs e)
 8      {
 9        //取得参数e中包含的对象的引用        
10        GridViewExpendHeader currentGVE = ((RebuildHeaderEventArgs)e).GridViewObject;  //到操作当前GridView的对象引用
11        GridViewRow currentHeaderRow = ((RebuildHeaderEventArgs)e).HeaderRowObject; ////到操作当前GridView's HeaderRow的对象引用
12
13        
14        //创建一个行并设置与GridViewExtend当前的头类型风格一致
15        GridViewRow willAddHeaderRow = new GridViewRow(00, DataControlRowType.Header, DataControlRowState.Normal);
16        willAddHeaderRow.Font.Bold = true;
17        willAddHeaderRow.BackColor = Color.FromName("#003399");
18        willAddHeaderRow.ForeColor = Color.FromName("#CCCCFF");      
19        
20        ////在当前HeaderRow上面再增加一行
21        TableCell cell = new TableCell();
22        cell.Text = "Number";
23        cell.HorizontalAlign = HorizontalAlign.Center;
24        willAddHeaderRow.Cells.Add(cell);
25
26        cell = new TableCell();
27        cell.Text = "Detail";
28        cell.ColumnSpan = 2;
29        cell.HorizontalAlign = HorizontalAlign.Center;
30        willAddHeaderRow.Cells.Add(cell);
31        
32        currentGVE.Controls[0].Controls.AddAt(0, willAddHeaderRow);       
33    }

(五). 示例代码下载

      http://www.cnblogs.com/Files/MVP33650/ExtendGridViewHeader.rar

 (六). 控件开发其它相关文章:

        http://blog.csdn.net/ChengKing/category/288694.aspx

 

 

 

 

 





http://www.niftyadmin.cn/n/3658048.html

相关文章

NLP学习笔记(5)

传统的语音识别模型需要建立一个generative模型&#xff0c;从语言模型中产生单词序列&#xff0c;然后产生tokens&#xff08;音标&#xff09;序列&#xff0c;然后产生语音序列&#xff08;时域或频域的声音序列&#xff09;&#xff0c;然后是计算得到一些特征&#xff08;…

深入浅出话窗体(一)——窗体事件模型(上)

深入浅出话窗体&#xff08;一&#xff09;——窗体事件模型&#xff08;上&#xff09;作者&#xff1a;CSDN 刘铁猛小序&#xff1a;工作中最大的挑战并不是那些Mission Impossible&#xff0c;而是你需要一边保持安静、平衡的心态以专注于工作&#xff0c;一边对抗公司体制、…

NLP学习笔记(6)

我们希望把多个单词组成的短语同样在词向量的空间中找到对应的向量&#xff0c;当然你也可以在不同的空间中&#xff0c;但是如果在同一空间中是有好处的 &#xff0c;我可以利用该空间捕捉到短语与单词之间意思的相似度&#xff0c;比如the man on the snowboard 和 snowboard…

Programming C# 4th. Edition 中文/英文版对照阅读体验

Programming C# 4th Edition 中文版/英文版 对照阅读体验大概是耐心所至的缘故&#xff0c;我那几篇冠以“深入浅出C#”的文章在网络里被广泛转载——这当然是好事&#xff01;有更多的朋友通过我的介绍认识并喜欢上了C#这门可爱的语言。广泛转载的Side Effect就是我的邮箱时常…

C# 3.0 语言定义文档(微软官方版)正式发布!

C# 3.0 语言定义文档&#xff08;微软官方版&#xff09;正式发布如果想精通一门编程语言&#xff0c;你就需要像律师研究法律条款一样来研究这门语言的定义文档&#xff08;Language Specification&#xff0c;简称LangSpec&#xff09;。静悄悄地&#xff0c;C# 3.0语言定义文…

NLP学习笔记(8)

这节课的内容看得太快而且有点难&#xff0c;所以这里只是做一下记录&#xff0c;并不详细&#xff0c;作为一个内容的索引&#xff0c;事后需要自己取搜论文了解细节 这是一个想改进tree LSTM的模型 有人用基于字符的模型&#xff0c;也有人用基于单词的模型&#xff0c;还有…

进程编程1 – Unix环境高级编程7章读书笔记

Process Environment1 Process Termination进程的终止有些下面的方法&#xff1a;1. 从main函数return2. 调用exit&#xff1a;exit属于ISO C标准中定义的函数&#xff0c;会执行清理工作。包括关闭IO库中所有打开的文件流&#xff08;这会导致所有的文件buffer都被flu…

NLP学习笔记(7)

QA系统 希望一个QA系统能同时完成&#xff1a;回答问题、语义分析、词性标注三个任务有两个难点&#xff0c;一个是在这三个任务上各自表现效果好的模型不同&#xff0c;也就是说没有一个模型能同时很好地完成者三个任务&#xff1b;第二个是&#xff0c;在NLP中并没有发现在一…