2009-01-06 92 views
23

有没有一种方法可以在UpdatePanel进程完成时执行脚本。ASP.NET - UpdatePanel和JavaScript

我有一个允许对记录进行“插入”,“复制”和“编辑”的页面。 这是全部在UpdatePanel上完成的,以防止页面导航。 页面上的其他位置我想打印“闪存”消息 - 如“您已成功输入记录”。它不在UpdatePanel附近,我想在消息上使用jQuery效果,以便在4秒后淡出。我怎样才能使用UpdatePanel发送脚本或在UpdatePanel刷新后执行脚本?我应该写脚本到asp:文字吗?想法?

回答

29

是:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 

然后:

function endRequestHandler(sender, args) 
{ 
    // Do stuff 
} 

文档herehere。请记住,这将触发页面上的每个AJAX请求。

26

这应该做的伎俩:

 <script type="text/javascript"> 
      var prm = Sys.WebForms.PageRequestManager.getInstance(); 
      prm.add_beginRequest(BeginRequestHandler); 
      prm.add_endRequest(EndRequestHandler); 

      function BeginRequestHandler(sender, args) 
      { 
       //Jquery Call 
      } 

      function EndRequestHandler(sender, args) 
      { 
       //Jquery Call 

      } 
     </script> 
+1

谢谢。我用它来添加一个微调。 – 2011-02-13 01:51:09

2

布鲁诺,

首先,要回答你直接的问题。在由更新面板调用的回调函数中,您应该可以使用RegisterStartupScript调用来调用JS方法。然后在您的JS方法,你会显示消息,然后你可以用做:

setTimeout('$('#myMessage').fadeOut("slow")', 4000); 

有它在4秒钟后消失。

为了更进一步,由于您已经在实施JavaScript,因此我会邀请您检查this article about UpdatePanels。如果可能的话,我会尝试发送Ajax调用来进行插入,复制和编辑,这将进一步简化用户的反馈,并防止线路上的多余信息。

+0

我不相信对RegisterStartupScript的调用可以将JS注入到AJAX回调中。 – 2009-01-06 21:06:05

3
var requestManager = Sys.WebForms.PageRequestManager.getInstance(); 
requestManager.add_beginRequest(function() { alert('here1') }); 
requestManager.add_endRequest(function() { alert(here2') }); 

来源:http://www.howtositecore.com/?p=36

3

的Sys.WebForms.PageRequestManager.getInstance()方法的工作非常适合我的。

我使用了很多包含多个UpdatePanel的页面,并且我已经了解到,即使您不希望刷新UpdatePanel,它也会自动启动。因此,在事件发生的功能里面,请确保你有类似的东西:

function BeginRequestHandler(sender, args) { 
if (args.get_postBackElement().id == "ID of the Updatepanel") { 
// do stuff here