UPdatePanel的简单用法(3) --客户端编程1

先简单介绍下客户端生命周期 和 Sys.WebFroms.PageRequestManager类

PageRequestManager类中的一些重要方法和属性:
1,getInstance静态方法          --获得全局唯一的PageRequestManager实例
2,IsInAsyncPostBack属性      --是否正处在一个异步更新过程
3,abortPostBack方法           --取消当前异步更新(多次取消不会产生异常,没有调用异步刷新也不会产生异常)

客户端生命周期:
Sys.Application和PageRequestManager共同形成了客户端的生命周期

PageRequestManager 

异步刷新的时候触发的事件:initializeRequest
                                       beginRequest
                                       pageLoading
                                       pageLoaded
                                       endRequest

进入页面  --->PageRequestManger-pageLoaded事件  --->Application -init事件  --->Application-load事件
离开页面 ---> pageUnload方法-->Application- unload事件

发起一个异步更新

PageRequestManager-initializeRequest事件 ---> PageRequestManager-beginRequest事件--->正常提交到服务器--->PageRequestManager pageLoading事件--->PageRequestManager -pageLoaded事件 ---> Application-Load事件 --->PageLoad方法 --->PageRequestManager-endRequest事件 

PageRequestManager-initializeRequest事件 --->PageRequestManager-beginRequest事件---> 如果错误/超时/取消 直接调用 --->PageRequestManager-endRequest事件

Application-init事件
只在页面第一次初始化时触发,触发时候所有脚本已经加载完毕,组建还没有开始创建,用于创建各种组建
Application -load事件 参数(sender Sys.ApplicationLoadEventArgs)

Sys.ApplicationLoadEventArgs参数有俩个重要属性:
1,components 属性  获得此次家在阶段中所有建立的对象
2,isPartialLoad属性  是否为异步调用导致页面加载,类似页面的IsPostBack属性

Application-unload事件 资料上说用于通知 (没有用过)

PageRequestManager --initializeRequst事件sender,InitializeRequestEventArgs)
参数InitializeRequestEventArgs 的 属性:request 属性 用于获得WedRequest对象
                                                           postBackElement属性 触发异步属性的dom元素

这个事件的常用操作:
                        --读取请求信息(request属性) 和 取消此次异步更新(默认情况下,新发出的请求会取消掉上次的异步刷新请求)

PageRequestManager --initializeRequst事件 的例子:异步请求的优先级别

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4.aspx.cs" Inherits="AJAXEnabledWebApplication1.WebForm4" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" >
  4. <head runat="server">
  5.     <title>无标题页</title>
  6. </head>
  7. <body>
  8.     <form id="form1" runat="server">
  9.     <asp:ScriptManager ID="ScriptManager1" runat="server">
  10.     </asp:ScriptManager>
  11.     <asp:UpdateProgress ID="UpdateProgress1" runat="server">
  12.     <ProgressTemplate>
  13.       <div style="color:Red">Loading......</div>
  14.     </ProgressTemplate>
  15.     </asp:UpdateProgress>
  16.     <br />
  17.     <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  18.     <ContentTemplate>
  19.         <%=DateTime.Now.ToString() %><br />
  20.         <asp:Label ID="Label1" runat="server"></asp:Label><br />
  21.         <asp:Button ID="btnFirst" runat="server" Text=" 优先异步刷新清秀" />
  22.         <asp:Button ID="btnCommen" runat="server" Text="普通异步刷新请求" />
  23.     </ContentTemplate>
  24.     </asp:UpdatePanel>
  25.     <div id="message" style="color:Red"></div>
  26.     <script type="text/javascript" language="javascript">
  27.       var timeoutSeed=null;
  28.       function showMessage(message,timeout){
  29.         $get("message").innerHTML=message;
  30.         if(timeoutSeed){
  31.            window.clearTimeout(timeoutSeed);
  32.         }
  33.         timeout=window.setTimeout(
  34.         function(){$get("message").innerHTML="";},timeout || 2500);
  35.       }
  36.       
  37.      //-------------------------------------------------------------------------------------------------------
  38.      //设置一个全局变量用来保存上次请求的buttonID
  39.      var lastPostBackButton=null;
  40.      
  41.      //保存优先级别高的buttonID
  42.      var btnFirsId="<%=this.btnFirst.ClientID %>";
  43.      
  44.      //Sys.WebForms.PageRequestManager.getInstance()获取唯一的PageRequestManager实例
  45.      Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(
  46.      function(sender,e){
  47.      
  48.         //获得实例
  49.         var param=Sys.WebForms.PageRequestManager.getInstance();
  50.         
  51.          //判断是否正在一个异步刷新中(get_isInAsyncPostBack()为true则存在异步刷新)
  52.         if(param.get_isInAsyncPostBack()){
  53.         
  54.             //如果上次异步刷新为优先级别高的刷新
  55.             if(lastPostBackButton==btnFirsId){
  56.             
  57.                 //取消此次异步刷新
  58.                 e.set_cancel(true);
  59.                 
  60.                 // 如果此次异步刷新请求的buttonID是优先的
  61.                 if(e.get_postBackElement().id==btnFirsId){
  62.                     showMessage("不可重复发起优先的异步刷新请求");
  63.                 }else{
  64.                    showMessage("请等待上次优先的异步刷新请求结束");
  65.                 }
  66.                 return;
  67.             }
  68.             //上次的异步刷新不是优先的异步刷新,判断此次的刷新是否是优先的
  69.             else if(e.get_postBackElement().id==btnFirsId){
  70.             
  71.               //如果是优先的异步刷新,不做任何操作,默认会取消上一次的异步刷新
  72.                 showMessage("新发起优先的异步刷新请求,普通的异步刷新请求将被取消");
  73.             }else{
  74.             
  75.                 //此次异步刷新请求为普通,上次也为普通,上次的将被取消
  76.                 showMessage("重新发起普通的异步刷新请求,上次的异步刷新请求将被取消");
  77.             }
  78.         }
  79.         lastPostBackButton=e.get_postBackElement().id;
  80.      }
  81.      );
  82.      //-------------------------------------------------------------------------------------------------------
  83.     </script>
  84.     
  85.     </form>
  86. </body>
  87. </html>
cs类代码:
  1. using System;
  2. using System.Collections;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.HtmlControls;
  9. using System.Web.UI.WebControls;
  10. using System.Web.UI.WebControls.WebParts;
  11. namespace AJAXEnabledWebApplication1
  12. {
  13.     public partial class WebForm4 : System.Web.UI.Page
  14.     {
  15.         protected void Page_Load(object sender, EventArgs e)
  16.         {
  17.             this.btnFirst.Click+=new EventHandler(btn_Click);
  18.             this.btnCommen.Click+=new EventHandler(btn_Click);
  19.         }
  20.         protected void btn_Click(object sender, EventArgs e)
  21.         {
  22.             System.Threading.Thread.Sleep(3000);
  23.             Button btn = sender as Button;
  24.             Label1.Text = string.Format("你点击了<{0}>按钮",btn.Text);
  25.         }
  26.     }
  27. }
先记录这些,其他事件下篇文章中介绍~




                                             




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值