重新认识 updatePanel
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.)
– 获得请求结果中额外的信息
– (能够)获得服务器端注册的数据项