フィールド レンダリング コントロールを作成する
最終更新日: 2010年4月5日
適用対象: SharePoint Foundation 2010
レンダリング コントロール クラスを 1 つ以上のレンダリング テンプレートと組み合わせて使用して、カスタム フィールドを新規モード、編集モード、または表示モードでレンダリングできます。
レンダリング コントロール クラスは、BaseFieldControl またはそこから派生した Microsoft SharePoint Foundation のいずれかのクラスから継承する必要があります。このクラスは、カスタム フィールド クラスと同じアセンブリにコンパイルされます。
直接または間接的に BaseFieldControl クラスから派生するカスタム フィールド クラスを作成する場合は、以下の名前付け規則を使用することをお勧めします。
フィールド型名FieldControl
TargetDateFieldControl および RegularExpressionFieldControl は、適切に名前が付けられたフィールド コントロール クラスの例です (SharePoint Foundation に付属する BaseFieldControl 派生クラスは、この名前付け規則が決定される以前に作成されたもので、DateTimeField などのように、フィールド型名 Field というパターンになっています)。
レンダリング コントロールをインスタンス化するオブジェクトは、その Field プロパティ内に、表示するフィールド オブジェクトへの参照を保持します。後者は、その FieldRenderingControl プロパティ内に、そのレンダリング コントロールへの参照を保持します。これらの相互参照が示唆するように、2 つのオブジェクトはパートナーです。SPField 派生オブジェクトはコンテンツ データベースとの対話を処理し、BaseFieldControl 派生レンダリング コントロールはユーザーおよび UI のフィールドのレンダリングとの対話を処理します。
レンダリング テンプレート
すべてのレンダリング コントロールには、少なくとも 1 つのレンダリング テンプレートが関連付けられています。RenderingTemplate オブジェクトは、%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\controltemplates フォルダー内の .ascx ファイルの RenderingTemplate 要素として定義されます。レンダリング テンプレートは、レンダリング コントロール オブジェクトの TemplateName プロパティまたは DisplayTemplateName プロパティ内のその ID 値によって参照されます。
注意
BaseFieldControl は、TemplateBasedControl から、複数のレンダリング テンプレートにリンクし、レンダリング コンテキストに基づいてそれらを切り替えることができるメンバーを継承します。
レンダリング テンプレートの詳細については、「[方法] フィールド レンダリング テンプレートを作成する」を参照してください。
CreateChildControls メソッド
レンダリング コントロール クラスは、Control から継承する CreateChildControls メソッドをオーバーライドします。レンダリング テンプレートが大部分のレンダリング作業を実行するので、CreateChildControls メソッドは、従来の ASP.NET コントロール クラスで使用された場合のように多くの作業を実行することはありません。通常は、子コントロールの最終調整のみを行います。たとえば、新規モードで子コントロールに既定値を割り当てるか、表示モードおよび編集モードで子コントロールにフィールドの現在の値を割り当てます。CreateChildControls の上書きには、子コントロールを作成する new 演算子が多数含まれていることはほとんどありません (ASP.NET プログラミングの知識をお持ちの場合は、意外と思われるかも知れません)。
データの入力規則ロジックが CreateChildControls に含まれている場合があります。カスタム フィールド データの入力規則の詳細については、「ユーザー設定フィールド データ入力規則」を参照してください。