•参数类型:InitializeRequestEventArgs
–request属性:用于获得WebRequest对象(用于请求的信息)
–postBackElement:触发异步刷新的DOM元素
•常用操作:
–读取请求信息
–取消此次异步更新
优先级高的异步刷新
aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="1_PrecedencePostBack.aspx.cs" Inherits="_1_PrecedencePostBack" Title="PrecedencePostBack" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0" DynamicLayout="false">
<ProgressTemplate>
<span style="color:Red">Loading</span>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%= DateTime.Now %><br />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
<asp:Button ID="btnPrecedence" runat="server" Text="优先" OnClick="Button_OnClick" />
<asp:Button ID="Button2" runat="server" Text="普通" OnClick="Button_OnClick" />
</ContentTemplate>
</asp:UpdatePanel>
<script type="text/javascript" language="javascript">
var lastPostBackButtonId = null;
var btnPrecedenceId = "<%= this.btnPrecedence.ClientID %>";
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(
function(sender, e)
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm.get_isInAsyncPostBack())
{
if (lastPostBackButtonId == btnPrecedenceId)
{
e.set_cancel(true);
if (e.get_postBackElement().id == btnPrecedenceId)
{
showMessage("不可重复发起优先的刷新。");
}
else
{
showMessage("请等待优先的刷新结束。");
}
return;
}
else if (e.get_postBackElement().id == btnPrecedenceId)
{
showMessage("发起优先的刷新,普通的刷新将被取消。");
}
else
{
showMessage("重新发起普通的刷新,前一次提交将被取消。");
}
}
lastPostBackButtonId = e.get_postBackElement().id;
});
</script>
</asp:Content>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0" DynamicLayout="false">
<ProgressTemplate>
<span style="color:Red">Loading</span>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%= DateTime.Now %><br />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
<asp:Button ID="btnPrecedence" runat="server" Text="优先" OnClick="Button_OnClick" />
<asp:Button ID="Button2" runat="server" Text="普通" OnClick="Button_OnClick" />
</ContentTemplate>
</asp:UpdatePanel>
<script type="text/javascript" language="javascript">
var lastPostBackButtonId = null;
var btnPrecedenceId = "<%= this.btnPrecedence.ClientID %>";
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(
function(sender, e)
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm.get_isInAsyncPostBack())
{
if (lastPostBackButtonId == btnPrecedenceId)
{
e.set_cancel(true);
if (e.get_postBackElement().id == btnPrecedenceId)
{
showMessage("不可重复发起优先的刷新。");
}
else
{
showMessage("请等待优先的刷新结束。");
}
return;
}
else if (e.get_postBackElement().id == btnPrecedenceId)
{
showMessage("发起优先的刷新,普通的刷新将被取消。");
}
else
{
showMessage("重新发起普通的刷新,前一次提交将被取消。");
}
}
lastPostBackButtonId = e.get_postBackElement().id;
});
</script>
</asp:Content>
cs
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button_OnClick(object sender, EventArgs e)
{
Thread.Sleep(3000);
Button button = sender as Button;
this.Label1.Text = String.Format("您点击了“{0}”按钮", button.Text);
}
{
}
protected void Button_OnClick(object sender, EventArgs e)
{
Thread.Sleep(3000);
Button button = sender as Button;
this.Label1.Text = String.Format("您点击了“{0}”按钮", button.Text);
}
使用Thread.Sleep(3000);需要导入命名空间System.Threading;