重新认识 updatePanel

    外面大雪倾城,只有在家里复习复习以前的资料。又看到了 updatePanel 这个 microsoft 力推的 ajax 控件。现在顺便做一个总结:
     PageRequestManager 类实现了截获和管理页面提交的功能。它有2个属性:
        isInAsyncPostBack
        abortPostBack //只能取消异步更新。 
    在 microsoft 的 ajax 方案中提出一个全新的概念,客户端生命周期。并使用 Sys.Application 对象(类为 Sys._Application)和 PageRequestManager 来共同管理这个周期(微软总是这样,由简单到复杂)。
    Application 对象在客户端生命周期包括:
        -init 事件 
                 ? 基于浏览器window.onload事件
                 ? 只在页面第一次初始化时触发
                 ? 所有脚本已经加载完毕,所有html已经下载,但浏览器还没有解释脚本。
                 ? 所有组件还没有开始创建
                 ? 用于创建各种组件(component behavor control)
                          – 为组件建立相互引用关系的时期
                          – 将在之后的课程中进行详细介绍

        -load 事件
           – 参数类型:Sys.ApplicationLoadEventArgs
                   components属性:获得这次加载阶段中所有建立的对象。
                   isPartialLoad属性:是否为异步调用导致页面加载。//类似服务器端的ispostback()
                        true:是异步刷新
                        false:第一次打开
           – 常用操作:
                   很多操作都在这里。

  
      -unload 事件
            – 仅用于通知

    微软提供了监听事件的“捷径”方法:
        pageLoad(
            function(){
                    .......
                           }
        )
         和
        pageUnload(
            function(){
                    .......
                           }
        ) 

    PageRequestManager 在客户端生命周期中的事件:
        -initializeRequest
        -beginRequest
        -pageLoading
        -pageLoaded
        -endRequest

各个阶段的常用操作:
---------------------------------------------------------
    -PRM – initializeRequest事件
     参数类型:InitializeRequestEventArgs
          – request属性:用于获得WebRequest对象(用于请求的信息)
          – postBackElement:触发异步刷新的DOM元素
      常用操作:
          – 读取请求信息 
          – 取消此次异步更新e.set_cancel(true);
-----------------------------------------------------------

PRM – beginRequest事件
? 参数类型:BeginRequestEventArgs
– request属性:用于获得WebRequest对象(用于请求的信息)
– postBackElement:触发异步刷新的DOM元素
? 常用操作:
– 读取请求信息
– 改变请求方式(替换Executor)
– 显示更新提示(常用)

--------------------------------------------------------------

PRM – pageLoading事件 //updatePanel还没有被更新,但up的代码已经生成,只是还没有被浏览器解析。

 ? 参数类型:PageLoadingEventArgs
 – dataItems属性:获得服务器端注册的数据项
 – panelsDeleting属性:获得即将删除的UpdatePanel
   当updatePanel有嵌套,当更新外部up时,首先删除内部up,然后重新建立。
 – panelsUpdating属性:获得即将更新的UpdatePanel
  //e.get_panelsUpdating

 ? 常用操作
  – 提示更新的UpdatePanel(改变UpdatePanel的样式)
  – (能够)获得服务器端注册的数据项
--------------------------------------------------------------

PRM – pageLoaded事件//updatePanel已经更新,但此时没有生成页面。

 ? 参数类型:PageLoadedEventArgs
  – dataItems属性:获得服务器端注册的数据项
  – panelsCreated属性:获得新建的UpdatePanel
  – panelsUpdated属性:获得已经更新的UpdatePanel

 ? 常用操作:
  – (能够)获得服务器端注册的数据项
  – (能够)执行服务器端注册的脚本
------------------------------------------------------------------
PRM – endRequest事件
? 参数类型: EndRequestEventArgs
 – dataItems属性:获得服务器端注册的数据项
 – error属性:获得异步刷新时获得的错误
 – errorHandled属性:表明错误是否已被处理了
 – response属性:获得这次请求获得的结果对象
? 常用操作:
 – 处理异步刷新结果(异常、超时、取消, etc.)
 – 获得请求结果中额外的信息
 – (能够)获得服务器端注册的数据项

posted @ 2008-01-27 16:17  老大卫  阅读(240)  评论(0编辑  收藏  举报