ASP.NET控件编写心得总结- 以后会写详细一点
2005-02-19 00:38
337 查看
编写ASP.NET控件一定要注意控件生命周期,特别是CreateChildControls()这个方法的执行期不确定,一不小心就会出错!总结来说,要注意以下几点:
子控件的生成时间是不确定的,换句话说,只有当需要创建子控件时,才会调用子控件的CreateChildControls()方法。
比如事件触发时需要知道子控件的Id,以便事件下派,这时就需要创建子控件。
如果重载DataBind()方法,应在该方法中重新生成整个子控件树,这里特别注意应全部重新生成,如果控件在提交情况下显示异常,应检查在DataBind()中是否全部重新生成了子控件树。
这是因为子控件的生成时间不确定,所有可能有部分生成,部分没有生成的情况,全部重新生成可以避免这种混乱。(混乱的一般表现是数据没有绑定上)
重载Render()方法中一般进行与数据无关也与操作无关的控件渲染工作,如加入样式表单,设置显示格式等等。
一点小技巧,视图状态一般用于需要绑定数据的控件,而这种控件是必须重载DataBind()方法,而DataBind()方法中重新生成整个控件树并加载数据。因此这种控件的CreateChildControls()方法中可以尽量少生成子控件,只创建事件触发需要的控件即可。(但应注意一点,为了保证控件ClientId的一致性,所有具有ClientId的控件都必须创建!)
草草写了这些,这段时间很忙,等有时间时再详述。
子控件的生成时间是不确定的,换句话说,只有当需要创建子控件时,才会调用子控件的CreateChildControls()方法。
比如事件触发时需要知道子控件的Id,以便事件下派,这时就需要创建子控件。
如果重载DataBind()方法,应在该方法中重新生成整个子控件树,这里特别注意应全部重新生成,如果控件在提交情况下显示异常,应检查在DataBind()中是否全部重新生成了子控件树。
这是因为子控件的生成时间不确定,所有可能有部分生成,部分没有生成的情况,全部重新生成可以避免这种混乱。(混乱的一般表现是数据没有绑定上)
重载Render()方法中一般进行与数据无关也与操作无关的控件渲染工作,如加入样式表单,设置显示格式等等。
一点小技巧,视图状态一般用于需要绑定数据的控件,而这种控件是必须重载DataBind()方法,而DataBind()方法中重新生成整个控件树并加载数据。因此这种控件的CreateChildControls()方法中可以尽量少生成子控件,只创建事件触发需要的控件即可。(但应注意一点,为了保证控件ClientId的一致性,所有具有ClientId的控件都必须创建!)
草草写了这些,这段时间很忙,等有时间时再详述。
相关文章推荐
- 方法控件[置顶] Asp.net总结(一)
- ASP.net中动态加载控件时一些问题的总结
- asp.net总结之asp.net中的控件
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )(二)
- 总结Asp.net中Page加载PostData的具体过程 进而解决"获取动态创建的控件的PostData数据"问题
- Asp.net 用户控件使用心得
- 对 ASP.NET 控件的一点理解(整理)
- asp.net控件开发基础(15) --------总结和补充
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- 开发ASP.NET Atlas服务器端Extender控件——编写客户端Behavior
- 关于ASP.NET动态加载控件的几点实用总结
- asp.net的验证控件教程(自总结一)
- ASP.NET 编写控件的一些常用属性
- Asp.net 2.0使用Global.asax制作网站计数器的一点心得
- 做完一个小网站的一点经验总结(1): asp.net 与access数据库结合
- ASP.NET验证控件详细使用解释
- ASP.NET常用数据绑定控件优劣总结
- 将asp.net1.1的应用程序升级到asp.net2.0的一点心得