リスト フォーム
最終更新日: 2010年4月8日
適用対象: SharePoint Foundation 2010
この記事の内容
データの入力規則
フィールド間の操作をカスタマイズする
このセクションの内容
Microsoft SharePoint Foundation 2010 には、既存のフォームやフィールド レンダリング コントロールをカスタマイズするための高度なフォーム インフラストラクチャが用意されています。SharePoint フォームは Microsoft.NET Framework コントロールを基にして作成されているため、既定の SharePoint フィールドをそのまま使用したり、拡張したりして、フォームの機能をより充実させることにより、SharePoint データの操作性を向上させることができます。
また、フォームで使用するフィールドは Microsoft ASP.NET コントロールです。フィールドのレンダリング機能を拡張するユーザー設定フィールドを作成し、既定のフィールドの機能も継承できます。SharePoint Foundation では、ASP.NET テンプレートを使用してフォームやフィールド コントロールのレイアウト用の静的 HTML を作成します。既存の SharePoint コントロール テンプレートをカスタマイズしたり、新規のテンプレートを作成して新しいテンプレート用にコントロールをカスタマイズしたりすることができます。
SharePoint フォームのカスタマイズには、以下のような作業が必要です。
FldTypes*.xml ファイルにユーザー設定フィールド型を作成するか、Schema.xml ファイルにユーザー設定フィールド定義を作成して、フィールドを拡張します。フィールド定義は、モード (フォームをリスト アイテムの表示、編集、作成のいずれの目的で使用するか) に応じてフィールドの表示方法を指定します。フィールド定義の拡張の詳細については、「ユーザー設定フィールド型」を参照してください。
SharePoint Foundation の標準フィールド コントロールを拡張してフィールド レンダリングやデータ入力規則を設定します。SharePoint コントロールを継承した分離コードを作成し、ユーザー設定フォーム フィールドに必要な固有のロジックを定義することができます。
フォーム ページ レイアウトのコントロール テンプレートを作成またはカスタマイズします。標準コントロールをオーバーライドするコントロール テンプレートを定義できます。
注意
既定の DefaultFormTemplates.ascx ファイルからコードをコピーして貼り付けるなどの方法で Microsoft Visual Studio 統合開発環境 (IDE) でユーザー設定フォーム レンダリング テンプレートを作成すると、有効なコードでエラーが発生する可能性がありますが、このようなエラーは無視しても問題ありません。
データの入力規則
データ型の妥当性などを検査するには、クライアント側のスクリプトにフィールドを指定してユーザー データの検証を行うか、フォームでサーバー側コードを使用してサーバー上のデータに基づいて検証を行うことができます。
GetValidatedString メソッドを、Microsoft.SharePoint.SPField を継承する SPFieldText などのユーザー設定フィールド型 (または SPField を継承する別のフィールド クラス) でオーバーライドします。この方法では、オブジェクト モデル レベルでフィールドが検証され、ユーザーがオブジェクト モデルで直接フィールド データを追加または編集した場合だけではなく、フォームを使用してデータを送信した場合も検証されます。
Validate メソッドをオーバーライドして入力規則ロジックを実装し、Microsoft.SharePoint.WebControls.BaseFieldControl または型固有の TextField などのコントロールを継承するユーザー設定フィールド コントロールで検証エラーが発生した場合にエラー メッセージを設定します。この方法では、フィールド コントロール レベルで検証が行われ、フォーム上の検証のみを対象とします。
フィールド間の操作をカスタマイズする
SharePoint Foundation は、複数フィールドをリンクし、1 つのフィールドの入力によって別のフィールドまたはフィールド グループの操作を起動する場合などのようなフィールド間の操作をサポートしていませんが、カスタマイズされたフォームにユーザー設定フィールド コントロールや入力規則を追加することができます。ユーザー設定コントロール内で、SPContext.FormContext プロパティを使用して取得できる Microsoft.SharePoint.SPFormContext オブジェクトの FieldControlCollection プロパティを使用して、他のフィールド コントロールにアクセスします。これで、ポストバックを使用してこれらのコントロールの動作を変更できます。