【问题标题】:jQuery outside of a asp.net update paneljQuery 在 asp.net 更新面板之外
【发布时间】:2010-07-23 22:11:04
【问题描述】:

我有一个使用和更新面板的 asp.net 页面,并且通过 {script src=abc.js} 标记包含一些 javascript。我尝试使用 $(document).ready 和 $(window).load 加载我的 javascript。两者都在初始加载时触发,但在更新面板回发时无法触发。

有什么我可以连接客户端的东西,无论更新面板如何都会触发?我知道我可以在服务器端注入脚本,但理想情况下,我希望在所有客户端都执行此操作,并在第一时间连接所需的内容。

【问题讨论】:

    标签: javascript asp.net jquery updatepanel


    【解决方案1】:

    如果您想注册一些代码以在UpdatePanel 回发时始终运行,您将需要注册您的函数以在发生更新时调用。您可以通过执行以下操作来注册要运行的 javascript 函数:

    // Javascript
    function InitializeScripts()
    {
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_pageLoaded(YourJavascriptFunctionYouWantToRun);
    }
    

    PageRequestManager 将在 UpdatePanel 刷新时调用您的 javascript 函数。

    我过去曾使用此方法在 UpdatePanel 由于计时器触发刷新时触发触发器。刷新完成后,脚本将自动运行以根据显示的数据更新其他控件。

    请参阅此MSDN article 了解更多信息。

    【讨论】:

    • 我在页面不包含更新面板的情况下添加了一些类型检查。 if (typeof (Sys) != "undefined") { var manager = Sys.WebForms.PageRequestManager.getInstance(); manager.add_pageLoaded(setup); } 其他 { 设置(); } });效果很好!
    【解决方案2】:

    将这些行嵌入到您的 javascript 标记中

    function foo()
    {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
    }
    function endRequestHandler(sender, args)
    {
        // Do your stuff
        alert('Update Panel routine is now complete');
    }
    

    然后,把它放在你的身体标签上

    <body onload="foo()">
    

    【讨论】:

    • 在发布多个问题的复制和粘贴样板/逐字答案时要小心,这些往往会被社区标记为“垃圾邮件”。如果您这样做,则通常意味着问题是重复的,因此请标记它们。
    猜你喜欢
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2010-11-15
    • 2010-12-24
    相关资源
    最近更新 更多