当使用UpdatePanel进行局部刷新时,有时候会遇到过长的等待时间,这时候,如果有一个“取消”按钮就能够为人机交互提供不少便利

在下面的代码中,我们先使用Sys.WebForms.PageRequestManager.getInstance()方法获取当前的PageRequest, 如果是异步刷新的话,就终止它

 

<script language="javascript" type="text/javascript">
<!-- 
var prm = Sys.WebForms.PageRequestManager.getInstance();
function CancelAsyncPostBack() {
    
if (prm.get_isInAsyncPostBack()) {
      prm.abortPostBack();
    }
}
// -->
</script>

 

接下来,使用一个HTML控件来调用这段JS方法即可完成“取消”效果,全部代码如下:

 


    <title>Untitled Page</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
    
        
<asp:ScriptManager ID="ScriptManager1" runat="server">
        
</asp:ScriptManager>
         
<script language="javascript" type="text/javascript">
        
var prm = Sys.WebForms.PageRequestManager.getInstance();
        
function CancelAsyncPostBack() {
            
if (prm.get_isInAsyncPostBack()) {
              prm.abortPostBack();
            }
        }
        
</script>

        
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
            
<ContentTemplate>
                
<asp:Button ID="Button1" runat="server" Text="Update" onclick="Button1_Click" />
                
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            
</ContentTemplate>
        
</asp:UpdatePanel>
        
<asp:UpdateProgress ID="UpdateProgress1" runat="server" 
            AssociatedUpdatePanelID
="UpdatePanel1">
            
<ProgressTemplate>
                Updating取消UpdatePanel的Updating (Cancel the Updating of UpdatePanel).
<input ID="Button2" type="button" value="Cancel" onclick="CancelAsyncPostBack();" />
            
</ProgressTemplate>
        
</asp:UpdateProgress>
    
    
</div>
    
</form>
</body>
</html>

 

参考资料:

MSDN:http://msdn.microsoft.com/en-us/library/bb386518.aspx

 

相关文章: