多点恒心,多点信心,多点细心,多点创新!

 

第一次亲密接触……开发ASP.NET服务器控件

     看到同行的都开发出自己的服务器控件,自己也想去试试!
     首先,去GOOGLE下别人是如何开发的?有什么经验之谈?从中会遇到什么样的问题?
       在这里,推荐一下:
http://thinhunan.cnblogs.com/archive/2005/11/30/287648.html
      其次,理想概念上的一些问题,这里就例举一些吧
      1:用户控件和自定义控件的区别:

自定义控件 用户控件
创作的最短设计时支持。 创作的完全设计时支持。在可视化设计器中,创作用户控件与创作 ASP.NET 页(“Web 窗体”页)没有差别。
以目标为公共语言运行库的面向对象的编程语言,如 C# 或 Visual Basic .NET,是用编程方式创作的。 使用 ASP.NET 页语法和脚本块(或代码隐藏页)声明性地创作的。
作为程序集 (.dll) 编译和保持的。 另存为带有 .ascx 扩展名的文本文件(带有可选的代码隐藏文件)。
非常适于创作一般的可重新发布的控件。 适合应用程序特定的功能。
设计时宿主中使用时的完全设计时支持。可以将自定义控件添加到可视化设计器的工具箱并拖放到页上。 设计器中的最小使用支持
     2.控件执行生命周期
阶段 控件需要执行的操作 要重写的方法或事件
初始化 初始化在传入 Web 请求生命周期内所需的设置 Init 事件(OnInit 方法)
加载视图状态 在此阶段结束时,就会自动填充控件的 ViewState 属性,。 LoadViewState 方法
处理回发数据 处理传入窗体数据,并相应地更新属性。 LoadPostData 方法
加载 执行所有请求共有的操作,如设置数据库查询。此时,树中的服务器控件已创建并初始化、状态已还原并且窗体控件反映了客户端的数据。 Load 事件

OnLoad 方法)

发送回发更改通知 引发更改事件以响应当前和以前回发之间的状态更改。 RaisePostDataChangedEvent 方法
处理回发事件 处理引起回发的客户端事件,并在服务器上引发相应的事件。 RaisePostBackEvent 方法
预呈现 在呈现输出之前执行任何更新。可以保存在预呈现阶段对控件状态所做的更改,而在呈现阶段所对的更改则会丢失。 PreRender 事件
保存状态 在此阶段后,自动将控件的 ViewState 属性保持到字符串对象中。 SaveViewState 方法
呈现 生成呈现给客户端的输出。 Render 方法
处置 执行销毁控件前的所有最终清理操作。在此阶段必须释放对昂贵资源的引用,如数据库链接。 Dispose 方法
卸载 执行销毁控件前的所有最终清理操作。控件作者通常在 Dispose 中执行清除,而不处理此事件。 UnLoad 事件(On UnLoad 方法)

3.属性应用说明
BrowsableAttribute
 属性和事件
 指定属性或事件是否应该显示在属性浏览器中。

CategoryAttribute
 属性和事件
 指定类别的名称,在该类别中将对属性或事件进行分组。当使用了类别时,组件属性和事件可以按逻辑分组显示在属性浏览器中。
 
DescriptionAttribute
 属性和事件
 定义一小块文本,该文本将在用户选择属性或事件时显示在属性浏览器底部。
 
BindableAttribute
 属性
 指定是否要绑定到该属性。
 
DefaultPropertyAttribute
 属性

(将此特性插入类声明前。)
 指定组件的默认属性。当用户单击控件时,将在属性浏览器中选定该属性。
 
DefaultValueAttribute
 属性
 为属性设置一个简单的默认值。
 
EditorAttribute
 属性
 指定在可视设计器中编辑(更改)属性时要使用的编辑器。
 
LocalizableAttribute
 属性
 指定属性应本地化。当用户要本地化某个窗体时,任何具有该特性的属性都将自动永久驻留到资源文件中。
 
DesignerSerializationVisibilityAttribute
 属性
 指定显示在属性浏览器中的属性是否应该(以及如何)永久驻留在代码中。
 
TypeConverterAttribute
 属性
 指定将属性的类型转换为另一个数据类型时要使用的类型转换器。
 
DefaultEventAttribute
 事件

4自定义控件生成器
[ControlBuilder(typeof(SorterControlBuilder))]
public class Sorter : WebControl, IPostBackDataHandler  {...}
 以上方括号里的元素为公共语言运行库属性,该属性将 SorterControlBuilder类与 Sorter控件关联。通过从 ControlBuilder 派生并重写SorterControlBuilder方法,自定义了Sorter的生成器。
在后面代码我们可以看到,Sorter定义一个自定义控件生成器,它重写从 ControlBuilder 继承的 GetChildControlType 方法。此方法返回要添加的控件类型,并可用来决定将要添加哪些控件。


以上为准备工作。如不清楚,请转:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconcompositecontrolvsusercontrol.asp

posted on 2006-04-07 10:08  Jerrie  阅读(258)  评论(0编辑  收藏  举报

导航