您的位置:首页 > 编程语言 > ASP

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

2007-12-18 22:12 1121 查看
 (一).  概述
        1. 做了个GridViewExtend自定义控件, 通过注册扩展自定义表头事件,  可以任意设置Header的格式.
        2. 易重用代码, 只要将ExtendGridView.dll 文件添加到项目引用即可. 
[align=left]实现原理:增加一个自定义事件,并将GridView头(HeaderRow)引用作为事件参数传递,使用时通[/align][align=left]过注册此事件来自定义头的布局,可以任意定制HeaderRow行数.[/align](二). 运行截图



(三). 使用步骤
     1. 将ExtendGridView.dll 添加到自己的Web站点中, 并在设计器中添加一个GridViewExpendHeader控件.
    2. 注册事件, 如图
     


      3. 在后台代码事件中编写重构GridView's HeaderRow的事件
(四). 完整代码
   1. 主控件类GridViewExpend.cs代码
[align=left] 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     } [/align]  2. RebuildHeaderEventArgs.cs 文件代码
[align=center] 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     }[/align]  3. 页面测试文件: default.aspx文件代码
[align=center] 1 
 2     
 3     
 4         
 5             
 6             
 7             
 8             
 9             
10             
11         
12         
13     

14     
15 [/align]  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(0, 0, 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
 
 
 
 
 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1547665
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航