用AJAX.NET的用戶端指令碼實現UpdateProgress的效果

來源:互聯網
上載者:User

用過ajax.net架構裡的updatePanel的使用者肯定會知道updateprogress的作用,專門用來在執行非同步作業顯示等待資訊,用法非常簡單,往裡面放一些圖片或文字即可實現看起來很不錯的效果。但是這種方式是在頁面運行之前就已經設定好了,不管什麼操作都顯示同一張圖片或者文字,不能針對某個具體的按鈕或者發送對象來顯示資訊,比如針對儲存操作就顯示"儲存中...",提交操作就顯示"提交中...",也就是能通過編程方式稍微靈活控制一下。也許有人說可以多設定幾個updatepanel,給每個updatepanel分配一個updateProgress,這也是種方法,但是產生的標記未免多了點。
最近看了一下AJAX.NET的用戶端指令碼文檔,知道通過架構提供的指令碼能夠更加細微的控制要顯示的內容,並且還可以加上"取消"按鈕或串連,點擊取消可停止asyncPostback。通過指令碼實現需要自己定製個類似updateProgress的div或者span,另外還要添加頁面事件,控制提示資訊的可見度。主要用到的是用戶端指令碼裡的頁面事件,具體簡單實現如下:

Code
 1<script language="javascript" type="text/javascript">
 2    function pageLoad()
 3    {
 4        // 添加事件
 5        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(onBeginRequest);
 6        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);   
 7    }
 8    
 9    function onBeginRequest(sender, e)
10    {
11        var elem = e.get_postBackElement();
12        var requestManager = Sys.WebForms.PageRequestManager.getInstance(); 
13        
14        // 點擊取消則停止 
15        if (requestManager.get_isInAsyncPostBack() & elem.id == "btnCancel" )
16        {
17             requestManager.abortPostBack();
18        }
19        
20        // 顯示正在處理的資訊 
21        if (elem.id != "btnCancel")
22        {  
23            dispUpdateProgress(String.format("{0} oper is processing.", elem.value), "");
24        } 
25    }
26    
27    function onEndRequest(sender, e)
28    {
29        dispUpdateProgress("", "none");
30    }
31    
32    //  控制顯示提示資訊
33    function dispUpdateProgress(msg, display)
34    {
35        $get("updateProgress").style.display = display;
36        $get("processingMsg").innerHTML = msg;
37    }
38    </script>
39 <form id="form1" runat="server">
40        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"/>
41    <asp:UpdatePanel ID="up" runat="server">
42    <ContentTemplate>
43    <asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" />&nbsp;&nbsp;
44    <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSave_Click" />
45    <div id="updateProgress" style="display:none">
46    <span id="processingMsg"></span>
47    <asp:Button ID="btnCancel" runat="server" Text="Cancel" />
48    </div>
49    </ContentTemplate>
50    </asp:UpdatePanel> 
51    </form>

cs
1protected void btnSave_Click(object sender, EventArgs e)
2        {
3            Thread.Sleep(4000);
4        }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.