`
lovnet
  • 浏览: 6711683 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

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

阅读更多

(一).概述

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

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

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

(二). 运行截图

(三). 使用步骤

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

2. 注册事件, 如图

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

(四). 完整代码

1. 主控件类GridViewExpend.cs代码

1///<summary>
2///Author:ChengKing(ZhengJian)
3///</summary>
4[ToolboxData("<{0}:GridViewExpendHeaderrunat=server></{0}:GridViewExpendHeader>")]
5publicclassGridViewExpendHeader:GridView
6{
7[Description("当需要重新构造Header时触发此事件")]
8publiceventSystem.EventHandlerRebuildHeader;
9
10protectedoverridevoidRender(HtmlTextWriterwriter)
11{
12OnRebuildHeader();
13
14base.Render(writer);
15}
16protectedoverridevoidCreateChildControls()
17{
18base.CreateChildControls();
19}
20
21protectedvirtualvoidOnRebuildHeader()
22{
23//重新构造Head
24if(RebuildHeader!=null)
25{
26RebuildHeaderEventArgsargs=newRebuildHeaderEventArgs();
27args.GridViewObject=this;
28args.HeaderRowObject=this.HeaderRow;
29
30RebuildHeader(this,args);
31}
32}
33}

2. RebuildHeaderEventArgs.cs 文件代码

1///<summary>
2///承载重构Header事件所需的参数[Author:ChengKing(ZhengJian)]
3///</summary>
4publicclassRebuildHeaderEventArgs:EventArgs
5{
6privateGridViewExpendHeader_GridViewObject;
7privateGridViewRow_HeaderRowObject;
8
9///<summary>
10///存储GrivViewExtend对象本身
11///</summary>
12publicGridViewExpendHeaderGridViewObject
13{
14get
15{
16return_GridViewObject;
17}
18set
19{
20_GridViewObject=value;
21}
22}
23
24///<summary>
25///存储GrivViewExtend的HeaderRow对象
26///</summary>
27publicGridViewRowHeaderRowObject
28{
29get
30{
31return_HeaderRowObject;
32}
33set
34{
35_HeaderRowObject=value;
36}
37}
38}

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

1<body>
2<formid="form1"runat="server">
3<divclass="a">
4<cc1:GridViewExpendHeaderid="GridViewExpend1"runat="server"BackColor="White"BorderColor="#3366CC"BorderStyle="None"BorderWidth="1px"CellPadding="4"OnRebuildHeader="GridViewExpend1_RebuildHeader">
5<FooterStyleBackColor="#99CCCC"ForeColor="#003399"/>
6<RowStyleBackColor="White"ForeColor="#003399"/>
7<SelectedRowStyleBackColor="#009999"Font-Bold="True"ForeColor="#CCFF99"/>
8<PagerStyleBackColor="#99CCCC"ForeColor="#003399"HorizontalAlign="Left"/>
9<HeaderStyleBackColor="#003399"Font-Bold="True"ForeColor="#CCCCFF"/>
10<AlternatingRowStyleBackColor="Lavender"/>
11</cc1:GridViewExpendHeader>
12
13</div>
14</form>
15</body>

4. 后台重构HeaderRow事件代码

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

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

(五). 示例代码下载

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

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

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

分享到:
评论

相关推荐

    经典cookie购物车源码[GridView实现]

    &lt;asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" &gt; &lt;asp:TemplateField&gt; &lt;asp:CheckBox ID="CheckAll" runat="server" AutoPostBack="True" /&gt; &lt;asp:CheckBox ID="CheckOne" ...

    简单新闻管理系统v适合.net初学者

    // just do nothing, because the asp.net engine binds the data automatically // 别忘了重新绑定 DataBind(); } protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { ...

    NOPI所有dll

    //根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档 FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); //判断文件后缀名是xls,还是xlsx,如果...

    MyDataGridMultiHeaderHelp 多表头帮助类

    一、对于MyMulDataGridViewHeader的使用的一个简单的示例 1、数据表 use master go --创建数据库 if exists(select * from sys.sysdatabases where name='TestDB') drop database TestDB go create database TestDB...

    Spreadsheet2Structu​re:读取电子表格并将其转换为字段名称取自 h 列的结构-matlab开发

    [IV,HeaderRow,Headers] = ... Spreadsheet2structure(TXT,'客户') 将需要一个看起来像的excel文件像这样: A B C D +-------------------------------- 1 | 2 | 客户金额价格3 | 史密斯 10 100 4 | 琼斯 4 9.2 ...

    RRGRID

    VISIBLE/GS_NO_COLHEAD/GS_NO_ROWHEAD创建时起作用 #define GS_VISIBLE 0x00000001L #define GS_NO_COLHEAD 0x00000002L #define GS_NO_ROWHEAD 0x00000004L &lt;br&gt; #define GS_READONLY ...

Global site tag (gtag.js) - Google Analytics