惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
云风的 BLOG
云风的 BLOG
小众软件
小众软件
雷峰网
雷峰网
博客园 - 【当耐特】
V
V2EX
WordPress大学
WordPress大学
IT之家
IT之家
Last Week in AI
Last Week in AI
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
The Cloudflare Blog
Jina AI
Jina AI
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
博客园 - 聂微东
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

博客园 - 良村

元数据驱动开发 - 面向对象编程思想的补充 用ANTLR实现表达式词法和语法分析器 我的开源项目分享-基于SharpBrowser二次开发的定制浏览器,过程中填坑无数 AI是什么 现阶段AI编程无法取代程序员 用zrender实现工作流图形化设计(附范例代码) 特殊字符
导致的Javascript脚本异常 不同寻常的浏览器请求无响应错误 进销存管理中对红冲处理的误区 进销存管理中负库存产生的原因以及对应措施 打造自己的Html文本编辑控件 探讨对Web控件的异常处理 看了一篇不错的文章 - 使用 UTF-8 对 XML 文档进行编码 Ajax学习笔记(2) - 一定要用XML吗? Ajax 学习笔记(1) ASP.NET控件编写日记-当心“用过的控件”! CodeDom.CodeArrayCreateExpression不能生成多维数组的创建表达式 用NAnt编译带有资源文件(*.resx,*.bmp,*.gif等)的C#项目 网址收藏 C#实现Singleton的两种方法的比较 发现Maxthon(myIE2)浏览器处理javascript脚本时的奇怪现象 - 良村 - 博客园 页面缓冲与Asp.Net的性能优化(设置Page.Buffer属性) 如何使用AdminScripts脚本创建虚拟目录 采用HttpModules来重写URLs(实践篇)
ASP.NET控件编写心得总结- 以后会写详细一点
良村 · 2005-02-19 · via 博客园 - 良村

编写ASP.NET控件一定要注意控件生命周期,特别是CreateChildControls()这个方法的执行期不确定,一不小心就会出错!总结来说,要注意以下几点:

  1. 子控件的生成时间是不确定的,换句话说,只有当需要创建子控件时,才会调用子控件的CreateChildControls()方法。
    比如事件触发时需要知道子控件的Id,以便事件下派,这时就需要创建子控件。
  2. 如果重载DataBind()方法,应在该方法中重新生成整个子控件树,这里特别注意应全部重新生成,如果控件在提交情况下显示异常,应检查在DataBind()中是否全部重新生成了子控件树。
    这是因为子控件的生成时间不确定,所有可能有部分生成,部分没有生成的情况,全部重新生成可以避免这种混乱。(混乱的一般表现是数据没有绑定上)
  3. 重载Render()方法中一般进行与数据无关也与操作无关的控件渲染工作,如加入样式表单,设置显示格式等等。
  4. 一点小技巧,视图状态一般用于需要绑定数据的控件,而这种控件是必须重载DataBind()方法,而DataBind()方法中重新生成整个控件树并加载数据。因此这种控件的CreateChildControls()方法中可以尽量少生成子控件,只创建事件触发需要的控件即可。(但应注意一点,为了保证控件ClientId的一致性,所有具有ClientId的控件都必须创建!)

草草写了这些,这段时间很忙,等有时间时再详述。