初学自定义控件开发总结

在看过了自己买的《ASP.NET 2.0 服务器控件和控件开发高级编程》和Joe的有关WebControl开发系列的博文后,终于对如何开发Web自定义控件有了总体的了解和认识,现总结如下:

1.首先要从一个例子入手,可以不知道里面的个中秘密,但要先做一个建立控件开发的成就感,因为开发自定义控件很不容易。

2.当你按照书里讲的做出第一个控件后,发现原来你也可以在页面设计状态拖拽自己的控件,并设置自己的属性了,非常好玩。

3.随着看书的不断深入,你发现需要和触发事件,并和服务器端交互的时候,难度就来了。控件的事件机制比较复杂,不是简单看书就能理解的,需要编写例子,上网查资料,成功实现。

4.探索原理。当你可以服务器端交互的时候,突然发觉自己虽然做出来了,但是会有疑问,为什么他是这样的?为什么只能这样写?这个时候你必须了解Page的生命周期,掌握里面的组织结构和调用顺序,然后对事件访问机制做一个全面的了解。

5.当你明白了上面这些内容后,一切通道就都打开了,可以去学习那些比较复杂的控件开发了。

其中可以参考的文章是Joe的关于WebControl的开发http://www.cnblogs.com/joeliu/archive/2008/07/03/1234250.html

 需要特别说明的是,在控件继承并实现IPostBackDataHandler,IPostBackEventHandler这两个接口的时候,一定要主意如果只实现IPostBackEventHandler接口,那么你所实现的RaisePostBackEvent方法,就会在PostBack阶段被诸如Submit之类的按钮所触发,但如果你需要和Post的表单数据进行交互的话并且还要加入一些按钮事件的话,那么就必须同时实现这两个接口的方法。而且在IPostBackDataHandler.LoadPostData的方法里,

必须加入Page.RegisterRequiresRaiseEvent(this);

否则RaisePostBackEvent就不会触发,这和Page的生命周期有关。因为在ProcessPostData阶段,系统(微软默认写的方法里)会先判断是否实现了IPostBackDataHandler,如果没有实现在判断是否实现了IPostBackEventHandler,如果有则自动注册一个ASP.NET服务器事件;如果有实现IPostBackDataHandler,则进入LoadPost方法,那你只能手动去向客户端注册事件,否则你自己定义的事件就不会被触发。

关于Page.RegisterRequiresRaiseEvent(this)的了解可以参考http://www.cnblogs.com/wubiyu/archive/2007/07/05/807082.html

我自己做了一个关于计算体重指数的自定义控件,放到附件里以备自己以后查看和学习

 计算体重指数控件

posted on 2010-06-27 12:24  贾罗德  阅读(282)  评论(0编辑  收藏  举报

导航