ASP.NET UpdatePanel使用時にRegisterStartupScriptでスクリプトを出力する
ASP.NET サーバー処理でJavaScriptを出力するで、サーバー処理でクライアントスクリプト(JavaScirpt
)を出力する(埋め込む)方法を紹介しました。
画面全体を再描画する通常のポストバック時は上記リンクで紹介した方法で問題ありませんが、UpdatePanel
使用時(非同期ポストバック時)は少し方法を変更する必要があります。
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
上記のように定義したUpdatePanel
で非同期ポストバックをするときは、以下のように設定します。
Dim script = "alert('更新しました');"
ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "alert", script, True)
(control, type, key, script, addScriptTags)
の形式で指定します。
control
スクリプトを登録するコントロールを指定します。
UpdatePanel
のコントロールを指定すると、そのUpdatePanel
が更新されるときにスクリプトが出力されるようになります。
type
スクリプトを登録するコントロールの型を指定します。
UpdatePanel1.GetType()
で、UpdatePanel
の型を取得してを指定します。
key
登録するクライアントスクリプトのキーを指定します。
このメソッドを複数回実行する場合、キーの値を同じにした場合は後から実行したスクリプトに上書きされます。
両方のスクリプトを実行したい場合はキーが一意になるように設定する必要があります。
script
登録するクライアントスクリプトを指定します。
実際に実行したいJavaScript
を文字列で指定します。
addScriptTags
スクリプトタグを追加するかどうかをBoolean
で設定します。
True
の場合は、script
が<script>
, </script>
で囲われます。
False
の場合は、script
が<script>
, </script>
で囲われないため、script
に手動でスクリプトタグを設定する必要があります。
このパラメータは省略可能です。省略した場合はFalse
として処理されます。