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

UpdatePanelのポストバックの開始と終了のイベントを設定する

ASP.NETUpdatePanelの非同期ポストバックの開始または終了のタイミングで何かしらの処理を行いたい場合があります。

JavaScriptで非同期ポストバックの開始と終了のイベントを設定できます。

Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(function (sender, args) {
  console.log('非同期ポストバック開始');
});

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) {
  console.log('非同期ポストバック終了');
});

非同期ポストバックのトリガーとなったコントロールを取得

非同期ポストバックの開始と終了のイベント処理の中で、非同期ポストバックのトリガーとなったコントロールを知りたい場合があります。

(例えばButton1がクリックされた時だけ非同期ポストバック終了のタイミングで処理を行いたい場合など)

以下のように、add_initializeRequestのタイミングでトリガーとなったコントロールを保持しておき、add_endRequestで保持したコントロールを取得して処理を実装できます。

var postbackElement; // トリガーとなったコントロールを保持しておく変数
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(function (sender, args) {
  postbackElement = args.get_postBackElement(); // トリガーとなったコントロールを保持
});

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) {
  if (postbackElement.id === 'Button1') {
    console.log('Button1の非同期処理が完了しました。');
  }
});

関連記事