フィールド レンダリング テンプレート
フィールド レンダリング テンプレートとは、C:\program files\common files\microsoft shared\web server extensions\12\template\controltemplates フォルダにある .ascx ファイルの RenderingTemplate 要素として定義されている RenderingTemplate オブジェクトのことです。レンダリング コントロール クラスの CreateChildControls メソッドと共に使用され、新規作成モードまたは編集モード (場合によっては表示モード) でフィールドを表示します。
レンダリング テンプレートとレンダリング コントロールの関係
RenderingTemplate オブジェクトとは、一種のハイブリッド Control-ITemplate オブジェクトのことです。Control から派生し、新しいメンバを 1 つだけ追加します。このメンバは [P:Microsoft.SharePoint.WebControls.RenderingTemplate.][Template] プロパティで、ITemplate オブジェクトが含まれています。これにより、レンダリング コントロール (TemplateBasedControl から派生) から ITemplate オブジェクトを間接的に参照できるようになります。この参照は、レンダリング テンプレートの ID プロパティ ([P:Microsoft.SharePoint.WebControls.RenderingTemplate.ID)] により RenderingTemplate オブジェクトを参照することによって実現します。レンダリング コントロールでは、所有する 1 つ以上の String プロパティを使用してこれを実現します。このようなプロパティである TemplateName は、レンダリング テンプレートの ID を保持することができます。
レンダリング テンプレート システム
すべてのフィールド レンダリング コントロールには、少なくとも 1 つの関連するフィールド レンダリング テンプレートが含まれています。Windows SharePoint Services 3.0 では、表示の際に C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES にある .ascx ファイルで宣言されているすべてのコントロールの ID を検索することにより、必要なテンプレートを検索します (Web アプリケーション開始時にこれらのすべてが読み込まれます)。
フィールド レンダリング構成
フィールド レンダリング テンプレートを使用してユーザー設定フィールドの表示方法を決める際は、幅広いオプションの中から詳細なコントロールを使用することができます。このトピックでは、最も一般的な構成についてのみ説明します。その他のレンダリング オプションの詳細については、「カスタム フィールド レンダリングのパターン」を参照してください。
ユーザー設定フィールドの種類を作成する際に最もよく使用するフィールド レンダリング構成には、以下のような特徴があります。
レンダリング コントロールが 1 つのレンダリング テンプレートのみに関連づけられており、コントロールの TemplateName プロパティを使用してテンプレートの ID を指定します。
このテンプレート 1 つで、新規作成モードや編集モードでのフィールド レンダリングのほとんどが提供されます。(表示モードでのレンダリングは通常、フィールドの説明で定義されている RenderPattern で処理されます。)
レンダリング コントロールの CreateChildControls メソッドを使用すると、新規作成モードでレンダリング コントロールの子コントロールに既定値が割り当てられます。また、編集モードで子コントロールにフィールドの現在の値が割り当てられます。(表示モードでは処理は行われません。) そのほかに、子コントロールの Label に CSS クラスを割り当てるなどの "仕上げ" のレンダリング作業が行われます。
入力規則ロジックは、フィールド レンダリング コントロールの Validate、IsValid、ErrorMessage の各メンバと、その基礎となるフィールドの種類の GetValidatedString メソッドにより実装されます。(Validate は、CreateChildControls により呼び出される場合があります。)
BaseFieldControl は、複数のレンダリング テンプレートとのリンクを確立し、レンダリング コンテキストに基づいてこれらのテンプレート間を切り替えることを可能にする TemplateBasedControl メンバと FieldMetadata メンバから継承しています。フィールド レンダリングのその他のパターンに関する詳細については、「カスタム フィールド レンダリングのパターン」を参照してください。