2

我有一个包含自定义选项卡控件的页面。当您单击不同的选项卡时,它会执行 ajax 回调。在该 ajax 调用期间,代码会根据单击的选项卡动态加载不同的控件,然后将其添加到相应的选项卡中。所以基本上我有一些代码执行 switch 语句,使用 LoadControl(),然后添加控件。

我遇到的问题是,每个加载的控件中的任何 javascript 都没有在页面上注册。基于这个线程:

AJAX 方法调用中的 RegisterClientScriptBlock

我以为我只需要从使用 Page.ClientScript.RegisterClientScriptBlock 切换到 ScriptManager.RegisterClientScriptBlock。我这样做了,但仍然没有。我对 ScriptManager 有误解吗?我希望从动态加载的控件中注册 javascript,控件恰好在 AJAX 调用期间加载。

提前致谢。

4

2 回答 2

2

在 Postback 后加载更新面板时,您需要重新注册位于受影响区域的脚本:

<asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/Resources/js/registeragain.js" />
    </Scripts>
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
         // AREA 
    </ContentTemplate>
</asp:UpdatePanel>

再次注册.js

Sys.Application.add_init(AppInit);
function AppInit(sender) {
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(End);
}
function End(sender, args) {
    //Aqui se vuelven a llamar los scripts necesarios despues de que carge el Update Panel    
}
于 2012-09-01T13:43:29.977 回答
0

在 UpdatePanel 中加载 Web 控件时,我遇到了同样的问题。问题是动态加载到页面中的 JavaScript 代码不会被自动解析。

我已经从这篇文章中的信息解决了

只需重用提供的 InlineScript 控件并将其包装在您的<script />标签周围。它会为你做剩下的事情。

于 2010-09-14T06:59:53.667 回答