【问题标题】:Is it possible to re-execute javascript in an UpdatePanel?是否可以在 UpdatePanel 中重新执行 javascript?
【发布时间】:2010-12-09 16:29:38
【问题描述】:

我有以下几点:

<asp:UpdatePanel ID="upd" runat="server">
    <ContentTemplate>

        <script> alert("execute again"); </script>

        <asp:LinkButton ID="go" runat="server" Text="Exec JS" />

    </ContentTemplate>
</asp:UpdatePanel>

页面第一次呈现脚本时执行。如果我单击按钮导致回发,它不会再次执行。

有没有办法让它再次执行脚本?

【问题讨论】:

    标签: c# asp.net ajax updatepanel


    【解决方案1】:

    哟!有一种简单的方法可以让 JavaScript 再次运行。将 javascript 放在页面的 HeadContent 部分:

    <script> 
    
    function BindIt()
    {
        alert("execute again"); 
    }
    
    </script>
    

    然后在更新面板内的页面上添加调用您为 javascript 创建的函数的部分:

                <asp:ScriptManager ID="ScriptManager1" runat="server">
                </asp:ScriptManager>
                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <ContentTemplate>
                    <script type="text/javascript">
                        Sys.Application.add_load(BindIt);
                    </script>
    ...
    

    在我正在处理的一个项目中,我希望页面上的所有 javascript 都能再次运行,所以我只是将它们全部放入一个庞大的 BindIt 样式函数中。我花了一段时间才弄清楚,我尝试了很多方法来让它工作,但这是我能够让 jquery 与更新面板一起工作的唯一方法

    【讨论】:

    • 谢谢你,它适用于我的 SharePoint 2010 FBA 应用程序
    【解决方案2】:

    由于 ASP 只是推送原始数据,而不是实际执行它,您可能需要使用 ScriptManager 的 RegisterStartupScript 方法以编程方式注入脚本以在部分回发后加载。

    编辑 更直接地,尝试查看 ScriptManager.RegisterStartupScript() 以获取更新面板。例如

    【讨论】:

      【解决方案3】:

      如果 JavaScript 与 jQuery 相关,以下链接肯定会有所帮助:

      http://weblogs.asp.net/hajan/archive/2010/10/07/make-them-to-love-each-other-asp-net-ajax-updatepanels-amp-javascript-jquery-functions.aspx

      我个人使用了本文中提到的第二种方法,它对我很有效。

      【讨论】:

      • 是的!那是我用的同一篇文章。 :)
      猜你喜欢
      • 2010-10-15
      • 1970-01-01
      • 2016-09-04
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 2010-11-16
      • 1970-01-01
      相关资源
      最近更新 更多