为特定异步回发赋予优先级2012-02-24 MSDN 默认情况下,当某个页同时生成多个异步回发时,最近生成的回发将优先。某些情况下,可以为特定的异步回发赋予优先级并取消其他回发。先决条件若要在您自己的开发环境中实现这些过程,您需要:Microsoft Visual Studio 2005 或 Microsoft Visual Web Developer 速成版。一个支持 AJAX 的 ASP.NET 网站。创建用于为特定回发元素赋予优先级的脚本首先,创建用于管理浏览器中的异步回发的 ECMAScript (JavaScript) 代码。创建用于为特定回发元素赋予优先级的脚本在 ASP.NET 网站中,添加 JScript 文件并将其命名为 PostbackPrecedence.js。向文件中添加以下脚本:Sys.Application.add_load(ApplicationLoadHandler)
function ApplicationLoadHandler(sender, args)
{
   if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack())
   {
    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequest);
   }
}
var divElem = "AlertDiv";
var messageElem = "AlertMessage";
var exclusivePostBackElement = "Button1";
var lastPostBackElement;
function InitializeRequest(sender, args)
{
   var prm = Sys.WebForms.PageRequestManager.getInstance();
   if (prm.get_isInAsyncPostBack() &&
     args.get_postBackElement().id === exclusivePostBackElement)
   {
     if (lastPostBackElement === exclusivePostBackElement)
     {
      args.set_cancel(true);
      ActivateAlertDiv("visible", "A previous postback is still executing. The new postback has been canceled.");
      setTimeout("ActivateAlertDiv("hidden","")", 1500);
     }
     else if (lastPostBackElement !== exclusivePostBackElement)
     {
      prm.abortPostBack();
     }
   }
   else if (prm.get_isInAsyncPostBack() &&
        args.get_postBackElement().id !== exclusivePostBackElement)
   {
     if (lastPostBackElement === exclusivePostBackElement)
     {
       args.set_cancel(true);
       ActivateAlertDiv("visible", "A previous postback is still executing. The new postback has been canceled.");
       setTimeout("ActivateAlertDiv("hidden","")", 1500);
     }
   }
   lastPostBackElement = args.get_postBackElement().id;
}
function ActivateAlertDiv(visString, msg)
{
    var adiv = $get(divElem);
    var aspan = $get(messageElem);
    adiv.style.visibility = visString;
    aspan.innerHTML = msg;
}
if(typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();