TOPシステム開発> UpdatePanelを使ってみる
ASP.NET+Ajax
試せばわかる!Ajax開発環境ASP.NET AJAX

第4回:ASP.NET AJAXを実際に使用する手順

著者:日立ソフトウェアエンジニアリング  宮崎 昭世   2007/4/20
前のページ  1  2   3  4  次のページ
UpdatePanelを使ってみる

   では、実際にUpdatePanelを貼り付けてみましょう。まずUpdatePanelを住所のカラム内に貼り付けます。次に、貼り付けたUpdatePanel内に住所のテキストボックスを移動させてください。
UpdatePanel貼り付け後のページ
図3:UpdatePanel貼り付け後のページ
(画像をクリックすると別ウィンドウに拡大図を表示します)

   前回作成した例とは異なり、UpdatePanel内に郵便番号テキストボックスや住所仮定ボタンを入れようとするとレイアウトが崩れてしまいます。もし前回と同じように動作させたい場合はUpdatePanelのプロパティを以下のように設定します。

UpdatePanelのプロパティウィンドウ
図4:UpdatePanelのプロパティウィンドウ

   ここで、Triggersプロパティの「…」ボタンをクリックします。図5のUpdatePanelTriggersコレクションエディタが表示されるので、追加ボタンの右側の「▼」ボタンをクリックしてください。

UpdatePanelTriggersコレクションエディタ
図5:UpdatePanelTriggersコレクションエディタ
(画像をクリックすると別ウィンドウに拡大図を表示します)

   追加ボタンの下にメニューが表示されるので、AsyncPostBackTriggerをクリックしてください。

UpdatePanelTriggersコレクションエディタのメニュー
図6:UpdatePanelTriggersコレクションエディタのメニュー
(画像をクリックすると別ウィンドウに拡大図を表示します)

   左のメンバリストにAsyncPostBackが追加されました。右側のプロパティでControlIDにButton1を、EventNameにClickを選択してください(どちらも入力欄の右端の「▼」ボタンで選択できます)。

UpdatePanelTriggerのプロパティ
図7:UpdatePanelTriggerのプロパティ
(画像をクリックすると別ウィンドウに拡大図を表示します)

   これで前回と同じように動作します。


UpdatePanelのプロパティについて

   実際に前回と同様に動作させることができたので、ここでUpdatePanelのプロパティについて少し解説をしておきます。

   UpdatePanelコントロールは、あるタイミングでUpdatePanel内の表示を更新してくれるコントロールです。デフォルトではUpdatePanel内で発生したPostBackを受け取ることにより、XMLHttpRequestオブジェクトを使って非同期にWebサーバへのリクエストを行い、UpdatePanel内の表示の更新を行っています。

   前回はこのデフォルト設定を使うことによってAjax化したWebページを作成しました。今回は実際のWebページを想定した形でデザインを行っており、UpdatePanel内にPostBackを発生させるコントロール(今回の例では登録ボタン)を配置することができません。そのため、非同期での表示更新を行うタイミングを指定したのです。

   先ほどの手順の中ではTriggersプロパティしか設定しませんでしたが、UpdatePanelにはこのほかにもプロパティが用意されています。これらのプロパティについて簡単に見てみましょう。

プロパティ 概要
RenderMode UpdatePanelをHTMLに変換するときに<div>タグを使うか<span>タグを使うかを選択します。デフォルトはBlockで<div>タグを使います
ChildrenAsTriggers UpdatePanelコントロールに含まれるコントロールのPostBackによってこのUpdatePanelの非同期更新を行うかどうかを設定します
デフォルトはtrueです。想定していないタイミングでの非同期更新を防ぐためにもfalseに設定し、Triggersプロパティを設定して使用します
Triggers UpdatePanelを更新するタイミング(コントロールとイベントの組み合わせ)を設定します。複数のイベントを設定することが可能です
UpdateMode UpdatePanelを更新するタイミングを設定します。デフォルトはAlwaysです
Alwaysの場合にはWebページ中で非同期更新を行うトリガとして設定したコントロールすべてによってこのUpdatePanel内が更新されます
想定していないタイミングでの非同期更新を防ぐためにもConditionalに設定し、Triggersプロパティを設定して使用します

表1:UpdatePanelのプロパティ

   前回作成したWebページではChildrenAsTriggersプロパティがデフォルト値のtrueとなっていたため、非同期更新が有効になっていました。今回はPanel内にPostBackを発生させるコントロールがない(デフォルト設定のTextBoxコントロールはPostBackを発生しません)ため、今回の手順で意図したとおりの動作となります。ただし、実際にはChildrenAsTriggersはfalseに、UpdateModeはConditionalにして利用します。

前のページ  1  2   3  4  次のページ


日立ソフトウェアエンジニアリング株式会社 宮崎 昭世
著者プロフィール
日立ソフトウェアエンジニアリング株式会社  宮崎 昭世
仕事ではWindows環境におけるアプリケーション開発の標準化・技術教育などを担当する。Webアプリケーション開発では、個人で作成したC言語のCGIプログラムからはじまり、Perl、ASP、Javaなどを経て現在はASP.NETを主に利用している。

Microsoft MVP for Visual Developer - ASP/ASP.NET
https://mvp.support.microsoft.com/
profile=6C540032-3FD0-43B0-98EF-3690158D4EE6

kogumaブログ
http://koguma.cocolog-nifty.com/koguma/



INDEX
第4回:ASP.NET AJAXを実際に使用する手順
  ASP.NET AJAXでUpdatePanelが使えないケース
UpdatePanelを使ってみる
  UpdateProgressを使ってみる
  ScriptManagerとScriptManagerProxyについて