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

时间:2010-06-06 21:19:24

标签: asp.net javascript

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

请建议。

由于

4 个答案:

答案 0 :(得分:21)

这是在更新后获取结束事件的方法。

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

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

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

答案 2 :(得分: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=”" />

在Asrechronous Post Back:

中设置服务器端代码中的值

受保护的子btn_Click(ByVal sender As Object,ByVal e As System.EventArgs)处理btnCreateSample.Click

    If condition Then

    hdnValue.value = “do this”

    Else     

    hdnValue.value = “do that” 

    End If 

End Sub

现在,您可以在Client Side EndRequestHandler函数中检查此隐藏字段的值,并根据其值为用户提供不同的警报:

function EndRequestHandler()
{
     if (document.getElementById(‘<%= hdnValue.ClientID %>’).value == “do this”)

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

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