1

4つのUpdatePanelを含むaspxページがあります。ちなみに、各UpdatePanelはJQueryUIタブに対応しています。私が達成しようとしているのは、UpdatePanelsの内側で実行されているサーバー側のコードから呼び出すことができるUpdatePanelsの外側のJQueryUIモーダルダイアログです。したがって、最初のUpdatePanelの中​​には、サーバー側のコードを実行するasp:Buttonがあります。エラーが発生した場合、モーダルダイアログを呼び出してエラーメッセージを表示するJavaScriptを挿入できるようにしたいと思います。これが私が使用しているコードです:

Dim script As String = "showPopupMessage('{0}');"
script = String.Format(script, errorMessage)
ScriptManager.RegisterStartupScript(Me.UpdatePanelBizInfo, Me.UpdatePanelBizInfo.GetType, Guid.NewGuid.ToString, script, True)

ページ上のshowPopupMessage関数は次のようになります。

function showPopupMessage(msg) {
    $('#<%=Me.LabelPopupMessage.ClientID %>').text(msg);
    $('#dialogPopupMessage').dialog('open');
}

コードを実行してJavaScriptを挿入しても、何も起こりません。UpdatePanel内で実行されているコードでエラーが発生するという事実と関係があると思います。結果のHTMLを検査すると、JavaScriptがそこにあります。私は何が間違っているのですか?

4

1 に答える 1

0

非同期ポストバック中にページでjavascriptを実行できますが、正しく実行するには、ScriptManagerクラスを使用して登録する必要があります。これを行うと、更新パネルがコールバックするときに起動スクリプトとして起動します。このような場合、起動スクリプトとしてモーダルウィンドウのopencallfireを実行できます。

これは、カスタムコードを投稿した非常によく似た質問です(承認された回答を参照)。それはおそらくあなたの問題を解決するでしょう。

ASP.Net-AJAXUpdatePanel内のJavascript

それ自体がモーダルオープンコールでopenMyModal(someParams...);ある場合は、リンクされたコードを次のように使用できます。

string scriptText = "openMyModal(someParams...);";
this.RegisterClientStartupScript("openMyModal", scriptText);
于 2010-01-08T19:55:46.957 に答える