ASP.NET - UpdatePanel和JavaScript

时间:2009-01-06 20:48:28

标签: asp.net asp.net-ajax updatepanel

有没有办法在UpdatePanel进程完成时执行脚本。

我有一个允许“插入”,“复制”和“编辑”记录的页面。 这都是在UpdatePanel上完成的,以防止页面导航。 在页面的其他地方,我想打印一条“flash”消息 - 比如“你已成功输入记录”。它不在UpdatePanel附近,我想对消息使用jQuery效果,因此它会在4秒后淡出。如何使用UpdatePanel发回脚本或在UpdatePanel刷新后执行脚本?我应该将脚本写入asp:literal吗?想法?

6 个答案:

答案 0 :(得分:30)

是:

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

然后:

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

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

答案 1 :(得分: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> 

答案 2 :(得分:4)

这是一篇关于如何使用ScriptManager的静态方法RegisterClientScriptBlock来完成它的文章。试过它,就像一个魅力。

http://csharperimage.jeremylikness.com/2009/06/inject-dynamic-javascript-into-aspnet.html

答案 3 :(得分: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

答案 4 :(得分:3)

Sys.WebForms.PageRequestManager.getInstance()方法对我来说也很有用。

我使用了很多包含多个Updatepanels的页面,并且我们已经知道,即使您不希望刷新更新面板,它也会自动触发。因此,在触发事件的函数内部确保您具有以下内容:

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

答案 5 :(得分:2)

布鲁诺,

首先,回答你的直接问题。在更新面板调用的回调中,您应该能够使用RegisterStartupScript调用来调用JS方法。然后在您的JS方法中,您将显示该消息,然后您可以使用do a:

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

让它在4秒后逐渐消失。

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