PostbackPrecedence.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. Sys.Application.add_load(ApplicationLoadHandler)
  2. function ApplicationLoadHandler(sender, args)
  3. {
  4. if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack())
  5. {
  6. Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequest);
  7. }
  8. }
  9. var divElem = 'AlertDiv';
  10. var messageElem = 'AlertMessage';
  11. var exclusivePostBackElement = 'Button1';
  12. var lastPostBackElement;
  13. function InitializeRequest(sender, args)
  14. {
  15. var prm = Sys.WebForms.PageRequestManager.getInstance();
  16. if (prm.get_isInAsyncPostBack() &&
  17. args.get_postBackElement().id === exclusivePostBackElement)
  18. {
  19. if (lastPostBackElement === exclusivePostBackElement)
  20. {
  21. args.set_cancel(true);
  22. ActivateAlertDiv('visible', 'A previous postback is still executing. The new postback has been canceled.');
  23. setTimeout("ActivateAlertDiv('hidden','')", 1500);
  24. }
  25. else if (lastPostBackElement !== exclusivePostBackElement)
  26. {
  27. prm.abortPostBack();
  28. }
  29. }
  30. else if (prm.get_isInAsyncPostBack() &&
  31. args.get_postBackElement().id !== exclusivePostBackElement)
  32. {
  33. if (lastPostBackElement === exclusivePostBackElement)
  34. {
  35. args.set_cancel(true);
  36. ActivateAlertDiv('visible', 'A previous postback is still executing. The new postback has been canceled.');
  37. setTimeout("ActivateAlertDiv('hidden','')", 1500);
  38. }
  39. }
  40. lastPostBackElement = args.get_postBackElement().id;
  41. }
  42. function ActivateAlertDiv(visString, msg)
  43. {
  44. var adiv = $get(divElem);
  45. var aspan = $get(messageElem);
  46. adiv.style.visibility = visString;
  47. aspan.innerHTML = msg;
  48. }
  49. if(typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();