web-dev-qa-db-ja.com

ASP.NET-UpdatePanelとJavaScript

UpdatePanelプロセスが完了したときにスクリプトを実行する方法はありますか?.

レコードの「挿入」、「コピー」、および「編集」を許可するページがあります。これはすべて、ページナビゲーションを防ぐためにUpdatePanelで行われます。ページのどこかで、「レコードが正常に入力されました」などの「フラッシュ」メッセージを印刷したい。 UpdatePanelの近くではないので、メッセージにjQueryエフェクトを使用して、4秒後にフェードアウトするようにします。 UpdatePanelを使用してスクリプトを返信したり、UpdatePanelの更新後にスクリプトを実行したりするにはどうすればよいですか?スクリプトをasp:literalに書き込む必要がありますか?考え?

25
BuddyJoe

はい:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);

その後:

function endRequestHandler(sender, args)
{
  // Do stuff
}

ドキュメント here および here 。これは、ページ上のすべてのAJAXリクエストに対して発生することに注意してください。

31
Robert C. Barth

これでうまくいくはずです:

       <script type="text/javascript">
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            prm.add_beginRequest(BeginRequestHandler);
            prm.add_endRequest(EndRequestHandler);

            function BeginRequestHandler(sender, args) 
            {
                 //Jquery Call
            }

            function EndRequestHandler(sender, args) 
            {
                 //Jquery Call

            }
        </script> 
27
cgreeno

以下は、ScriptManagerの静的メソッドRegisterClientScriptBlockを使用してそれを行う方法に関する記事です。それを試してみて、魅力のように機能します。

http://csharperimage.jeremylikness.com/2009/06/inject-dynamic-javascript-into-aspnet.html

4
ctorx
var requestManager = Sys.WebForms.PageRequestManager.getInstance();
requestManager.add_beginRequest(function () { alert('here1') });
requestManager.add_endRequest(function () { alert(here2') });

出典: http://www.howtositecore.com/?p=36

3
Mike

Sys.WebForms.PageRequestManager.getInstance()メソッドも私にとってはうまく機能します。

複数のUpdatepanelを含む多くのページで作業していますが、更新したくないUpdatepanelがある場合でも、これが自動的に起動することを学びました。したがって、イベントで発生する関数内に、次のようなものがあることを確認してください。

function BeginRequestHandler(sender, args) {
if (args.get_postBackElement().id == "ID of the Updatepanel") {
// do stuff here
3
Brian Lorraine