2

カスタムタブコントロールを含むページがあります。別のタブをクリックすると、ajaxコールバックが実行されます。そのajax呼び出し中に、コードはクリックされたタブに基づいて異なるコントロールを動的にロードし、それを適切なタブに追加します。つまり、基本的に、switchステートメントを実行し、LoadControl()を使用して、にコントロールを追加するコードがあります。

私が抱えている問題は、ロードされる各コントロール内のJavaScriptがページに登録されていないことです。このスレッドに基づく:

AJAXメソッド呼び出し内のRegisterClientScriptBlock

Page.ClientScript.RegisterClientScriptBlockの使用からScriptManager.RegisterClientScriptBlockの使用に切り替える必要があると思いました。私はそれをしましたが、それでも何もしませんでした。ScriptManagerについて何か誤解していますか?動的にロードされたコントロール内からjavascriptを登録したいのですが、これはAJAX呼び出し中にロードされます。

前もって感謝します。

4

2 に答える 2

2

ポストバック後に更新パネルをロードするときは、影響を受ける領域にあるスクリプトを再度登録する必要があります。

<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>

registeragain.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 に答える