更新 : 2007 年 11 月
テンプレート レンダリングをサポートする ASP.NET モバイル コントロールは、既定のレンダリングもサポートします。複数のテンプレートを使用してレンダリングを構成する方法は、ターゲット デバイスによって異なります。ASP.NET には、テンプレート レンダリングをデバイス固有にする標準的な操作のシーケンスが用意されています。テンプレート レンダリングをサポートするモバイル コントロールは、次のシーケンスに従う必要があります。
コントロールは、IsTemplated プロパティを使用して、デバイス テンプレートが定義され、選択されているかどうかを判断します。これを行うには、OnInit メソッドまたは CreateChildControls メソッドを使用します。
テンプレートが定義されている場合、コントロールは、MobileControl 基本クラスから継承した CreateTemplatedUI メソッドを呼び出します。
メモ :
コントロールがテンプレート化されていない場合は、CreateTemplatedUI を呼び出さないでください。
CreateTemplatedUI は、コントロール アダプタの CreateTemplatedUI メソッドを呼び出します。このメソッドをオーバーライドするデバイス アダプタを記述して、デバイス固有のテンプレート レンダリングを実装できます。
コントロール アダプタの CreateTemplatedUI メソッドの既定の実装は、コントロール アダプタの基本クラスで定義されており、コントロールの CreateDefaultTemplatedUI メソッドをコールバックします。このメソッドをオーバーライドするコントロールを作成して、一般的なテンプレート レンダリングを実装できます。
アダプタの Render メソッドでは、コントロールがコントロールの子をレンダリングして、テンプレートをレンダリングします (テンプレートのインスタンスが作成されている場合)。
モバイル コントロールは、TemplateContainer から派生したコンテナ コントロール型の中に新しいテンプレートのインスタンスも常に作成する必要があります。この規則は、ASP.NET サーバー コントロールに対する規則よりも厳格です。ASP.NET サーバー コントロールの規則では、INamingContainer マーカー インターフェイスを実装することだけが要求されています。次のコード例は、モバイル コントロールのテンプレートのインスタンスを作成する方法を示しています。
void CreateChildTemplate(ITemplate template)
{
TemplateContainer container = new TemplateContainer();
template.InstantiateIn(container);
container.DataBind();
Controls.Add(container);
}
ItemCommand イベント
テンプレート レンダリングの場合、ASP.NET イベント バブル機構を使用して ItemCommand イベント ハンドラが呼び出されます。イベント ハンドラには、ソース項目およびイベントを生成したコントロールの CommandName プロパティを指すパラメータが渡されます。これによって、関連するいくつかのやり取りを伴って、単一の一覧項目を表示することができます。
既定のレンダリングでは、ユーザーが項目の一覧をクリックできる単純なユーザー インターフェイスがコントロール上に提供されます。ポストバック時、コントロールは、ItemCommand ハンドラを呼び出し、ソース項目を指す引数を渡します。CommandName プロパティは null を返します。
参照
処理手順
方法 : template 宣言された ASP.NET ユーザー コントロールを作成する