特定の UpdatePanel がロードされた後にクライアント側の JavaScript 関数を呼び出す方法 質問する

特定の UpdatePanel がロードされた後にクライアント側の JavaScript 関数を呼び出す方法 質問する

クライアント側のJavaScriptメソッドを、特定の更新パネルが読み込まれましたか?

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler)これは、どの更新パネルの読み込みが完了した後にも実行されるため、私にとっては機能しません。クライアント側でどのパネルがロードされているかを見つける方法が見つかりません。

ScriptManager.GetCurrent(Page).AsyncPostBackSourceElementID AsyncPostBackSourceElementIDこれはサーバー側のオブジェクトなので私には機能しません。クライアント側で

ClientSide .Net フレームワークは、正しいコンテンツを更新するために、どの UpdatePanel を更新しているかを認識する必要があります。このイベントにフックする方法は確かにあるのでしょうか?

ご協力いただければ幸いです。

ベストアンサー1

ありがとうございます。どちらも良い回答です。最終的には、クライアント側スクリプト「pageloaded」を使用しました。これは、Google では明らかにされなかった、かなり隠れた方法です。興味のある方のために、このコードは FireBug で動作し、更新されたパネルを見つけるために PageLoaded メソッドが機能する優れたデモを提供します。

<script type="text/javascript">
        $(document).ready(function() {
            panelsLoaded = 1;
            Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(PageLoaded)
        });

        function PageLoaded(sender, args) {
            console.log("I have occured " + panelsLoaded++ + " times!");

            var panelsCreated = args.get_panelsCreated();
            for (var i = 0; i < panelsCreated.length; i++) {
                console.log("Panels Updating: " + panelsCreated[i].id);
            }

            var panelsUpdated = args.get_panelsUpdated();
            for (var i = 0; i < panelsUpdated.length; i++) {
                console.log("Panels Updating: " + panelsUpdated[i].id);
            }
        }
    </script>

おすすめ記事