闂備浇銆€閸嬫捇鏌熼婊冾暭妞ゃ儻鎷� (0) +1 闂佽崵濮嶅鍡楊伓 (0) +1 闂傚倸饪存禍鐑藉箯閿燂拷 (0) +1
闂備浇銆€閸嬫捇鏌熼婊冾暭妞ゃ儲鍨块弻鐔衡偓娑櫭慨鍥р攽椤曞棙瀚�闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑缂佲晠鏌熼婊冾暭妞ゃ儻鎷�>>

正在阅读:PHP开发利器-PRADO 1.6PHP开发利器-PRADO 1.6

2005-04-27 10:26 出处: 作者:Qiang Xue/著 薛繁/译 责任编辑:xietaoming

2.2  页面

  页面是 TPage 或者它的子类的一个实例。它是最高级别的组件,即没有父组件也不包含在一个容器中。PRADO的应用是由一些页面组成的。

  2.2.1  页面的生命周期

  理解页面的生命周期对掌握PRADO编程是非常重要的。

  首先我们要介绍一下postback的概念。我们把一个form的提交称之为postback,如果form的数据是提交给包含该form的页面的。postback可以被认为是由用户在客户端触发的一个事件。PRADO会区分出把postback事件交给哪一个服务器端的组件来响应。如果找到了这个组件,比如是一个TButton
,那么我们就把这个TButton 组件称为事件的发送者(sender)。

  页面在被请求调用的时候会经过几个状态。当一个页面是由于它发生了一个postback而被调用的时候,这个页面会经历以下的生命周期:

  1. 页面的创建:页面和它所有子组件是被递归创建的。框架根据各个组件的规格文件和模板文件的配置来初始化组件的属性。你一个可以重载页面的构造函数来做一些其他的初始化工作,比如给一些属性赋一些缺省值。但是需要注意的是,在这一步的时候,是不能够访问其他组件,因为组件之间的关系这时候还没有被建立。
  2. OnInit 事件: OnInit 事件会被广播给整个页面的组件树(也就是说所有的组件都会被触发OnInit事件)。可以重载页面的onInit() 方法或者给OnInit事件指定一个处理方法来做一些初始化的工作,比如建立数据库连接等等。这时候组件和组件的关系已经被建立了。
  3. 导入显示状态(Viewstate):将先前的显示状态导入到页面中。页面自己会将上次显示给用户看的状态保存起来。关于显示状态,下一章会有更详细的解释。
  4. 导入提交的数据:页面中的一些组件的属性会根据用户提交的数据而更新。比如,TTextBox 组件的Text 属性会被用户在此组件的文本输入框中输入的文本而更新。
  5. OnLoad 事件:在这个阶段,页面会设置为提交前用户看到的状态。OnLoad
    事件也会被广播给整个页面的组件树。同样也可以重载onLoad() 方法或者给OnLoad 事件指定一个处理函数。
  6. 导入提交的数据:一些在OnLoad 步骤创建的组件在这时候有机会导入提交的数据。
  7. 产生提交数据变化事件。如果一个组件的数据被用户改变了,那么就会机会产生一个事件来指明这个变化。比如用户改变了一个TTextBox 组件的文本输入框的值,那么这个TTextBox 组件就会触发一个OnTextChanged 事件。开发者能够为这个事件指定处理方法。
  8. 输入验证:如果事件的提交者需要验证,这时候页面注册的验证组件会来对应的数据。
  9. Postback事件:postback事件通过事件的发送者被触发。比如,用户点击了一个按钮引起了一次postback,那么这个按钮对应的TButton 组件就触发一个事件OnClick。你可以指定这个事件的处理函数来响应这个事件。
  10. OnPreRender 事件:在这一步,页面已经完成了被提交的数据的导入和postback事件的处理。OnPreRender 事件会被广播给整个页面的组件树 。在页面被绘制之前,你可以重载onPreRender() 函数或者给OnPreRender 事件指定一个事件处理函数。
  11. 整个页面的组件树的显示状态被保存在一个固定的存储空间(比如表单的隐藏字段,session,或者数据库中)。
  12. 通过递归的方式页面类来显示这个页面,页面中的组件会自己显示自己(意思是说每一个组件都会负责显示它自己)。通常情况下,组件会在对应所在模板的位置上来显示自己。你也可以重载TComponentrender() 方法来自己控制组件的显示。
  13. OnUnload 事件:页面和它所有的子组件从内存中被释放。同样,这个事件也会被广播给整个页面的组件树。你可以通过重载onUnload() 函数或者给OnUnload 事件指定一个处理函数来完成一些清除工作,比如断开数据库的连接等等。

  当页面是第一次被请求的时候,上述的生命周期会简单一些。具体来说,导入显示状态,导入提交的数据,产生提交数据变化事件,输入验证和postback事件这几个状态是没有的。

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
闂備礁缍婂ḿ褔顢栭崱妞绘敠闁逞屽墴閹鎷呴崨濠備淮濠碘槅鍋撻幏锟�闂備焦鎮堕崕鎶藉磻濞戙垹鏄ラ悘鐐板嫎娴滄粓鏌涢锝嗙闁告棑鎷�