asp.net组件设计总结

这篇博客总结了ASP.NET组件设计的各个方面,包括继承Control、WebControl、复合控件、数据列表、数据绑定控件和导航控件的实现。同时,详细探讨了样式相关的内容,如重写TagKey、CreateControlStyle以及通过继承Style类定制样式。最后,介绍了属性的相关知识,区分了简单属性和复杂属性的管理方式。
摘要由CSDN通过智能技术生成

一、关于继承方面

1. 继承control类:

一般不可见html元素主要是继承control类,比如meta中的元素或者隐藏域等

2.继承webcontrol类:

一般可见元素比如<input type=text>等,为了获取更多的样式支持,减少代码量,一般直接继承webcontrol:

比如分页控件等:

http://blog.csdn.net/46539492/archive/2008/04/02/2244627.aspx

3.复合控件:

定义复合控件一般要继承INamingContainer这个接口。比如一个简单用户登陆控件

http://blog.csdn.net/46539492/archive/2008/03/14/2182934.aspx

4.数据列表控件:

比如DropDownList,CheckBoxList等控件一般继承ListControl,又因为这些控件存在数据传输或者说数据回发,则要继承IPostBackDataHandler接口。

 

5.复合列表控件

比如CheckBoxList,RadioButtonList等控件,除了继承ListControl类,IPostBackDataHandler接口外,还要实现IRepeatInfoUser接口,IRepeatInfoUser接口定义了重复项列表的列表控件实现的属性和方法,最后还因为他们是复合控件,还要继承INamingContainer接口6.数据绑定控件

 

(1)DataList

DataList类似于CheckBoxList,是重复项列表的列表控件,所以需要继承IRepeatInfoUser,也是复合控件,所以继承INamingContainer接口,此外还要继承BaseDataList类,该类用数据列表控件的基类,如DataList和DataGrid,该类提供所有数据列表控件的所有方法和属性。

(2)Repeater

Repeater比较灵活,继承control和INamingContainer接口。

(3)DataGrid

DataGrid类,和DataList类似,主要继承BaseDataList类和INamingContainer接口

(4)GridView
GridView是比较复杂的数据绑定控件,继承CompositeDataBoundControl, IPostBackContainer, IPostBackEventHandler, ICallbackContainer, ICallbackEventHandler

其中CompositeDataBoundControl表示由其他服务器控件组成的表格数据绑定控件的基类; IPostBackContainer接口定义一个方法;使控件能够获取客户端脚本选项。ICallbackContainer接口定义一个方法,使控件能够获取回调脚本;ICallbackEventHandler用于指示控件可以作为服务器的回调事件的目标。

6.导航控件

(1)TreeView控件

TreeView控件主要继承HierarchicalDataBoundControl, IPostBackEventHandler, IPostBackDataHandler, ICallbackEventHandler,其中HierarchicalDataBoundControl用作所有 ASP.NET 2.0 版数据绑定控件的基类,这些控件以分层形式显示它们的数据。因为有数据回发所以继承IPostBackDataHandler,继承IPostBackEventHandler处理回发事件,和GridView类似,ICallbackEventHandler用于指示控件可以作为服务器的回调事件的目标

(2)Menu控件

Menu主要继承HierarchicalDataBoundControl, IPostBackEventHandler, INamingContainer,因为Menu是个复合控件,继承INamingContainer接口。

二、样式相关

1. 重写TagKey

示例如下:

        重写TagKey

默认是HtmlTextWriterTag.Span,当需要其它标签时,需要重写TagKey,

比如以下代码:

 

  < table width = " 100% "  style = "  height:20px; border:solid 1px #cccccc; "  cellpadding = " 0 "  cellspacing = " 0 "   >

            
< tr >

                
< td align = " right " >

                   当前第

                    
< asp:Label ID = " lblCurrentPage "  runat = " server " ></ asp:Label > 页,

                    总共
< asp:Label ID = " lblRecodeCount "  runat = " server " ></ asp:Label > 条纪录,

                    共
< asp:Label ID = " lblPageCount "  runat = " server " ></ asp:Label > 页,

                    
< asp:Label ID = " Label1 "  runat = " server " ></ asp:Label >

                    
< asp:LinkButton ID = " lnkbtnFrist "  runat = " server "  OnClick = " lnkbtnFrist_Click " >< font face = webdings color = " red " > 9 </ font ></ asp:LinkButton >

                     
< asp:LinkButton ID = " lnkbtnPre "  runat = " server "  OnClick = " lnkbtnPre_Click " >< font face = webdings color = " red " > 7 </ font ></ asp:LinkButton >

                     
< asp:LinkButton ID = " lnkbtnNext "  runat = " server "  OnClick = " lnkbtnNext_Click " >< font face = webdings color = " red " > 8 </ font ></ asp:LinkButton >

                    
< asp:LinkButton ID = " lnkbtnLast "  runat = " server "  OnClick = " lnkbtnLast_Click " >< font face = webdings color = " red " > : </ font ></ asp:LinkButton >

                    跳转到第
< asp:TextBox ID = " txtPageIndex "  runat = " server "  style = " width:40px; "  onkeypress = " myKeyDown(); " ></ asp:TextBox > < asp:Button ID = " BtnChangePage "  runat = " server "  Text = " GO "  OnClick = " BtnChangePage_Click "   />                    

              
</ td >

            
</ tr >

        
</ table >

这段代码要写成控件,就需要重写TaGKey,改为HtmlTextWriterTag.Table。

然后绘制控件:

 

绘制控件
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值