页面和页面里的控件的事件的执行顺序。

简介:       第一次访问的时候的执行顺序:       1、页面的Oninit事件       2、页面的InitComplete事件       3、页面的PreLoad事件       4、页面的Page_Load事件       5、页面的LoadComplete事件     ...

 

      第一次访问的时候的执行顺序:

      1、页面的Oninit事件

      2、页面的InitComplete事件

      3、页面的PreLoad事件

      4、页面的Page_Load事件

      5、页面的LoadComplete事件

      6、控件里面的CreateChildControls事件

      7、页面的SaveStateComplete事件

      8、页面里的Render事件

 

      而当回发的时候(也就是表单提交后),事件的执行顺序就有些差别

      1、页面的Oninit事件

      2、页面的InitComplete事件

      3、控件里面的CreateChildControls事件 (原来是第六位)

      4、页面的PreLoad事件

      5、页面的Page_Load事件

      6、相应各个控件的事件,比如按钮的单击事件

      7、页面的LoadComplete事件

      8、页面的SaveStateComplete事件

      9、页面里的Render事件

 

       这里最郁闷的就是在回发的时候,控件里面的CreateChildControls事件的前移,提前到了页面的Load事件之前。

      如果控件的属性是在aspx页面里赋值的话,那么没有什么影响,如果是在Page_Load里面给控件的属性赋值的话,那么就会遇到一个问题,就是在第一次访问的时候,程序可以正常运行,但是在回发(表单提交)的时候,就会出现未给控件属性赋值的错误。究其原因就是在回发的时候,控件里面的CreateChildControls事件的执行顺序前移造成的。

      解决方法呢,一个就是在页面的Oninit事件里面赋值,不过这个不大习惯,另一个就是在控件内部实现属性的“缓存”,一般可以采用ViewState来保存属性值,这样在回发的时候就可以从缓存里面读取信息了。但是如果遇到很敏感的数据的时候,这么做就不太好了,所以,没办法,我才做了一个保存数据而且能够设置密钥的方法。http://www.cnblogs.com/jyk/archive/2009/04/24/1442794.html

       ps:这里面写的事件并不全,只是挑了几个常用的,而且特别的几个。

 

 

相关文章
|
7月前
|
小程序 UED 开发者
小程序如何监听页面的滚动事件
小程序如何监听页面的滚动事件
245 0
|
7月前
|
存储 JavaScript
JS中从a页面跳转到b页面,自动执行一次点击事件
JS中从a页面跳转到b页面,自动执行一次点击事件
|
小程序 JavaScript
小程序绑定事件跳转的三种方法
小程序绑定事件跳转的三种方法
196 0
|
7月前
|
程序员 iOS开发
页面的循环引用与监听事件的添加与删除,页面逻辑管理
页面的循环引用与监听事件的添加与删除,页面逻辑管理
40 0
|
JSON 小程序 JavaScript
小程序调用天气接口并且渲染在页面
小程序调用天气接口并且渲染在页面
74 0
Echarts链接操作弹出窗口防止重复触发点击事件的解决方案
Echarts链接操作弹出窗口防止重复触发点击事件的解决方案
136 0
|
JSON 小程序 JavaScript
【小程序】页面事件
【小程序】页面事件
157 0
【小程序】页面事件
ionic3 导航栏返回按钮事件设置 多级页面返回到指定的页面
ionic3 导航栏返回按钮事件设置 多级页面返回到指定的页面
127 0
森莎创建树形菜单和按钮触发行为
使用sencha3.x进行绘制,如截图将viewport的layout设置为border拖拽一个panel
1289 0