ASP.Net:需要在更新面板加载完成时运行JavaScript

10

我需要在更新面板完全加载时运行JavaScript函数(我想要滚动),而不是在初始页面加载时运行。

请建议。

谢谢

4个回答

21

这是在更新之后获取最终事件的方法。

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

    function EndRequest(sender, args) {
    }
</script>

2

未经测试

<script type="text/javascript">
  var app = Sys.Application;
  app.add_init(ApplicationInit);

  function ApplicationInit(sender) {
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    if (!prm.get_isInAsyncPostBack())
    {
        prm.add_pageLoaded(PageLoaded);
    }
  }

  function PageLoaded(sender, args) {
    //Do something
  }

</script>

1
如果您正在使用AJAX,则我目前发现的唯一向用户返回异步回传警报的方法是将“结束请求”处理程序添加到PageRequestManager中。
通过这种方式,您可以告诉请求管理器在从AJAX的异步回传事件返回时运行JavaScript函数。
实现此操作的代码如下:
function load()

{
   Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}

“EndRequestHandler”将是您想要调用的JavaScript函数的名称。 在标签的Onload事件中调用上述函数:

<body onload=”load()”>

function EndRequestHandler()

{

          alert(“You record has been saved successfully”);

}

现在,如果您想根据服务器端代码(代码后面)中的逻辑给出不同的消息,则可以使用服务器端隐藏字段:
<input id=”hdnValue” type=”hidden” runat=”server”  value=”" />

在异步回发的服务器端代码中设置其值:

Protected Sub btn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCreateSample.Click

    If condition Then

    hdnValue.value = “do this”

    Else     

    hdnValue.value = “do that” 

    End If 

End Sub

现在您可以在客户端的EndRequestHandler函数中检查此隐藏字段的值,并根据其值向用户提供不同的警报:
function EndRequestHandler()
{
     if (document.getElementById(‘<%= hdnValue.ClientID %>’).value == “do this”)

     { 
          alert(“You record has been saved successfully”);
     } 
     else
     {
          alert(“There is an error”);
     }
 }

0

如果使用jQuery,您可以使用下面的代码。

这是为了在更新面板更新后显示保存的消息并在5秒钟后隐藏该消息。

function pageLoad() {
            window.Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
        }
        function EndRequestHandler()
        {
            window.setTimeout(function () {
                var label = window.$get('<%= lblMsg.ClientID%>');
                if (label != null) { label.style.display = 'none'; }
            }, 5000);
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接