自强不息,止于至善

身无半文,心忧天下;手释万卷,神交古人
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

处理异步刷新后的结果

Posted on 2007-10-27 20:25  L.Zhang  阅读(167)  评论(0)    收藏  举报

//前台代码节选

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        
<ContentTemplate>
            
<%= DateTime.Now %><br />
            
<asp:Button ID="btnError" runat="server" Text="Error" OnClick="btnError_Click" />
            
<asp:Button ID="btnTimeout" runat="server" Text="Timeout" OnClick="btnTimeout_Click" />
            
<input type="button" value="Abort" onclick="Sys.WebForms.PageRequestManager.getInstance().abortPostBack();" />
            
<asp:Button ID="btnDataItem" runat="server" Text="Register DataItem" OnClick="btnDataItem_Click" />
        
</ContentTemplate>
    
</asp:UpdatePanel>
    
    
<script language="javascript" type="text/javascript">
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
            
function(sender, e)
            {
                
//如果有错误
                if (e.get_error())
                {
                    
//自己处理错误
                    e.set_errorHandled(true);
                    
                    
if (e.get_response().get_timedOut())
                    {
                        alert(
"您的请求已超时。");
                    }
                    
else if (e.get_response().get_statusCode() != 200)
                    {
                        alert(
"遇到未知错误。");
                    }
                    
else
                    {
                        alert(e.get_error().message);
                    }
                }
                
else if (e.get_response().get_aborted())
                {
                    alert(
"您的请求已被取消。");
                }
                
else
                {
                    
var upId = "<%= this.UpdatePanel1.ClientID %>";
                    
var item = e.get_dataItems()[upId];
                    alert(
"您注册了:" + item);
                }
            });
    
</script>
//后台代码节选
    protected void Page_Load(object sender, EventArgs e)
    {
        
//设置超时时间
        ScriptManager.GetCurrent(this).AsyncPostBackTimeout = 3;
    }

    
protected void btnError_Click(object sender, EventArgs e)
    {
        
int two = 2;
        
int i = 3 / (two - 2);
    }

    
protected void btnTimeout_Click(object sender, EventArgs e)
    {
        Thread.Sleep(
5000);
    }

    
protected void btnDataItem_Click(object sender, EventArgs e)
    {
        ScriptManager.GetCurrent(
this).RegisterDataItem(this.UpdatePanel1, DateTime.Now.ToString());
    }