zukucode
主にWEB関連の情報を技術メモとして発信しています。

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として処理されます。


関連記事