取消一个正在执行的异步回发
生活随笔
收集整理的這篇文章主要介紹了
取消一个正在执行的异步回发
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
javascript代碼:
?????//pageLoad函數在成功更新后隱藏提示面板
?????function?pageLoad()?
??????{
??????showmessage("false","");
??????}
????//設定當引發(fā)initializeRequest事件時便執(zhí)行事件處理函數CheckStatus
????Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(CheckStatus);
?????function?CheckStatus(sender,args)
?????{
?????//取得PageRequestManager類的實例
?????var?prm=Sys.WebForms.PageRequestManager.getInstance();
?????//判斷是否在進行異步回發(fā)且點擊了“取消”按鈕,就調用PageRequestManager的abortPostBack方法取消異步回發(fā)
?????if(prm.get_isInAsyncPostBack()?&?args.get_postBackElement().id=='LinkButton1')
?????{
????????prm.abortPostBack();
????????//隱藏提示面板
????????showmessage("false","");
?????}
?????//判斷是否在進行異步回發(fā)并且又單擊了發(fā)送異步回發(fā)按鈕此時取消新的異步回送并顯示正在處理先前的請求
?????else?if(prm.get_isInAsyncPostBack()?&?args.get_postBackElement().id=='Button1')
?????{
?????args.set_cancel(true);
?????showmessage("true","仍在處理先前的請求");
?????}
?????//提示正在取得數據
?????else?if(!prm.get_isInAsyncPostBack()?&?args.get_postBackElement().id=='Button1')
?????{
???????showmessage("true","正在取得數據");
?????}
?????}
?????//顯示與隱藏提示信息
?????function?showmessage(visiable,msg)
?????{
?????if(visiable=="true")
?????{?
???????var?loading=$get("loading");
???????loading.style.visibility='visible';
???????$get("message").innerHTML=msg;
?????}
?????if(visiable=="false")
?????{?
???????var?loading=$get("loading");
???????loading.style.visibility='hidden';
???????$get("message").innerHTML=msg;
?????}
?????}
?????if?(typeof(Sys)?!==?'undefined')?Sys.Application.notifyScriptLoaded();
前臺頁面主要代碼:
<body>
????<form?id="form1"?runat="server">
????<div?align="center"??>
????????<asp:ScriptManager?ID="ScriptManager1"?runat="server"?>
????????????<Scripts>
????????????????<asp:ScriptReference?Path="ClientControl.js"?/>
????????????</Scripts>
????????</asp:ScriptManager>
????????<asp:Button?ID="Button1"?runat="server"?Text="獲取時間"?onclick="Button1_Click"?/>
????????<br?/>
????????<div?id="loading"?align="left"?style="?visibility:?hidden;">
????????????<img?alt=""?src="progressbar_long.gif"??/><span?id="message"></span>
????????????<asp:LinkButton?ID="LinkButton1"?runat="server">取消</asp:LinkButton>
????????</div>
????????<asp:UpdatePanel?ID="UpdatePanel1"?runat="server"?UpdateMode="Conditional">
????????????<ContentTemplate>
?????
????????????????<span>當前時間:</span><asp:Label?ID="Label1"?runat="server"?Text=""></asp:Label>
?????
????????????</ContentTemplate>
????????????<Triggers>
????????????????<asp:AsyncPostBackTrigger?ControlID="Button1"?EventName="Click">
????????????????</asp:AsyncPostBackTrigger>
????????????????<asp:AsyncPostBackTrigger?ControlID="LinkButton1"?EventName="Click"?/>
????????????</Triggers>
????????</asp:UpdatePanel>
????</div>
????</form>
</body>
Button1_Click事件代碼:
????protected?void?Button1_Click(object?sender,?EventArgs?e)
????{
????????//刻意暫停6S
????????System.Threading.Thread.Sleep(6000);
????????Label1.Text?=?DateTime.Now.ToString();
????}
?????//pageLoad函數在成功更新后隱藏提示面板
?????function?pageLoad()?
??????{
??????showmessage("false","");
??????}
????//設定當引發(fā)initializeRequest事件時便執(zhí)行事件處理函數CheckStatus
????Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(CheckStatus);
?????function?CheckStatus(sender,args)
?????{
?????//取得PageRequestManager類的實例
?????var?prm=Sys.WebForms.PageRequestManager.getInstance();
?????//判斷是否在進行異步回發(fā)且點擊了“取消”按鈕,就調用PageRequestManager的abortPostBack方法取消異步回發(fā)
?????if(prm.get_isInAsyncPostBack()?&?args.get_postBackElement().id=='LinkButton1')
?????{
????????prm.abortPostBack();
????????//隱藏提示面板
????????showmessage("false","");
?????}
?????//判斷是否在進行異步回發(fā)并且又單擊了發(fā)送異步回發(fā)按鈕此時取消新的異步回送并顯示正在處理先前的請求
?????else?if(prm.get_isInAsyncPostBack()?&?args.get_postBackElement().id=='Button1')
?????{
?????args.set_cancel(true);
?????showmessage("true","仍在處理先前的請求");
?????}
?????//提示正在取得數據
?????else?if(!prm.get_isInAsyncPostBack()?&?args.get_postBackElement().id=='Button1')
?????{
???????showmessage("true","正在取得數據");
?????}
?????}
?????//顯示與隱藏提示信息
?????function?showmessage(visiable,msg)
?????{
?????if(visiable=="true")
?????{?
???????var?loading=$get("loading");
???????loading.style.visibility='visible';
???????$get("message").innerHTML=msg;
?????}
?????if(visiable=="false")
?????{?
???????var?loading=$get("loading");
???????loading.style.visibility='hidden';
???????$get("message").innerHTML=msg;
?????}
?????}
?????if?(typeof(Sys)?!==?'undefined')?Sys.Application.notifyScriptLoaded();
前臺頁面主要代碼:
<body>
????<form?id="form1"?runat="server">
????<div?align="center"??>
????????<asp:ScriptManager?ID="ScriptManager1"?runat="server"?>
????????????<Scripts>
????????????????<asp:ScriptReference?Path="ClientControl.js"?/>
????????????</Scripts>
????????</asp:ScriptManager>
????????<asp:Button?ID="Button1"?runat="server"?Text="獲取時間"?onclick="Button1_Click"?/>
????????<br?/>
????????<div?id="loading"?align="left"?style="?visibility:?hidden;">
????????????<img?alt=""?src="progressbar_long.gif"??/><span?id="message"></span>
????????????<asp:LinkButton?ID="LinkButton1"?runat="server">取消</asp:LinkButton>
????????</div>
????????<asp:UpdatePanel?ID="UpdatePanel1"?runat="server"?UpdateMode="Conditional">
????????????<ContentTemplate>
?????
????????????????<span>當前時間:</span><asp:Label?ID="Label1"?runat="server"?Text=""></asp:Label>
?????
????????????</ContentTemplate>
????????????<Triggers>
????????????????<asp:AsyncPostBackTrigger?ControlID="Button1"?EventName="Click">
????????????????</asp:AsyncPostBackTrigger>
????????????????<asp:AsyncPostBackTrigger?ControlID="LinkButton1"?EventName="Click"?/>
????????????</Triggers>
????????</asp:UpdatePanel>
????</div>
????</form>
</body>
Button1_Click事件代碼:
????protected?void?Button1_Click(object?sender,?EventArgs?e)
????{
????????//刻意暫停6S
????????System.Threading.Thread.Sleep(6000);
????????Label1.Text?=?DateTime.Now.ToString();
????}
轉載于:https://www.cnblogs.com/dushouke/archive/2008/06/03/1212757.html
總結
以上是生活随笔為你收集整理的取消一个正在执行的异步回发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]一份ASP内存的释放的实验报告
- 下一篇: Enterprise Library 4