ユーザー設定フィールド クラスを作成する
最終更新日: 2015年3月9日
適用対象: SharePoint Foundation 2010
ユーザー設定フィールド型クラスを作成するには、SPField クラス、または下の表に示すクラスの 1 つを派生元とする必要があります。下の表に示すクラスはすべて、SPField クラスから派生するクラスですす。
注意
名前が SPField* のパターンになっている他のフィールド型クラスもありますが、これらのクラスは Microsoft SharePoint Foundation によって特別な方法で処理されます。これらのクラスから新しいクラスを派生させることはサポートされません。
SPField クラスから直接または間接的に派生するカスタム フィールド クラスを作成する際には、次の形式の名前を使用することをお勧めします。
フィールド型の名前Field
TargetDateField および RegularExpressionField は、適切に名前が付けられたクラスの例です (SharePoint Foundation に付属する SPField 派生クラスは、この名前付け規則が決定される以前に作成されたもので、SPFieldDateTime などのように、SPFieldfield_type_name というパターンになっています)。
ユーザー設定フィールド クラスの派生元にできる SPField クラスのメンバ
SPField クラスから直接派生していないユーザー設定フィールド型クラスは、次のクラスの 1 つを派生元とする必要があります。
クラス |
説明 |
---|---|
Boolean のフィールド型を表します。 |
|
選択のフィールド型を表します。 |
|
通貨のフィールド型を表します。 |
|
日時のフィールド型を表します。 |
|
ルックアップ フィールドを表します。SPFieldLookup オブジェクトに対するフィールド値は、SPFieldLookupValue オブジェクトに格納されます。 |
|
複数選択のフィールド型を表します。SPFieldMultiChoice オブジェクトに対するフィールド値は、SPFieldMultiChoiceValue オブジェクトに格納されます。 |
|
複数列のフィールド型を表します。SPFieldMultiColumn オブジェクトに対するフィールド値は、SPFieldMultiColumnValue オブジェクトに格納されます。 |
|
複数行テキストのフィールド型を表します。 |
|
数値のフィールド型を表します。 |
|
評価のフィールド型を表します。SPFieldRatingScale オブジェクトに対するフィールド値は、SPFieldRatingScaleValue オブジェクトに格納されます。 |
|
単一行テキストのフィールド型を表します。 |
|
URL のフィールド型を表します。SPFieldUrl オブジェクトに対するフィールド値は、SPFieldUrlValue オブジェクトに格納されます。 |
|
SharePoint Foundation ユーザーを表します。 |
注意
ユーザー定義フィールド値クラスの作成の詳細については、「[方法] ユーザー設定フィールド値クラスを作成する」を参照してください。
ユーザー設定フィールド動作の指定
ユーザー設定フィールド型を派生させるフィールド クラスを選択した後は、そのクラスのメンバのうち無効にするものを選択できます。フィールド型を特徴付けるプロパティと動作のほとんどはクラスに含まれているので、新しい実装で無効にする SPField の派生クラスを選択するだけで、さまざまな無効指定を行うことができます。
たとえば、SPField クラスには以下に示すメンバがあり、ユーザー設定フィールド型を開発する際には、必要に応じてこれらの実装を無効にできます。
注意
ここに挙げるメンバのほとんどについて、SPField クラスの既定の実装は、有用な動作をするようにはなっていません。たとえば、GetFieldValue は、渡された内容を返すだけです。また、GetValidatedString は、検証ロジックを含まない値クラスの ToString メソッドを呼び出すだけです。したがって、ユーザー設定フィールド型クラスが SPField から直接派生している場合は、このうち任意のメンバを無効にして、必要な目的を達成する別の方法を指定する必要があります。
無効化が必要になることの多い SPField クラスのメンバ
SPField クラスのメンバー |
説明 |
---|---|
表示、編集、新規の各フォーム内、およびフィールド コントロールを使用する任意のページ内で、フィールドをレンダリングするために使用できるコントロールを返します。レンダリング コントロールをインスタンス化するオブジェクトは、その Field プロパティに、レンダリング対象のフィールド オブジェクトへの逆参照を保持します。この逆参照が示すように、これら 2 つのオブジェクトはパートナーです。SPField の派生オブジェクトは、コンテンツ データベースとの連携を処理し、一方、BaseFieldControl の派生レンダリング コントロールは、ユーザーとの連携のほか、ユーザー インターフェイス (UI) へのフィールドのレンダリングを処理します。ただし、ユーザー設定フィールドは、必ずしもレンダリング コントロールでレンダリングする必要はありません。フィールド定義で定義された RenderPattern でもレンダリングできます。この場合、FieldRenderingControl プロパティは null にできます。最もよくあるパターンとしては、新規モードと編集モードでフィールドをレンダリングするときにはレンダリング コントロールを使用し、表示モードでレンダリングするときにはレンダリング パターンを使用します。 レンダリング コントロールを使用する場合は、ユーザー設定フィールド クラスによって、FieldRenderingControl プロパティの get アクセサーを無効にする必要があります。これには、次の標準的なパターンのコードを使用します。
アクセス許可属性では、SharePoint Foundation オブジェクト モデルを使用するためのアクセス許可が設定されたコードだけに、プロパティの読み取りを許可しています。フィールド オブジェクトの内部名を FieldName プロパティに割り当てている行では、フィールド オブジェクトへの Field プロパティの割り当ても行っています。 こうすることで、フィールド型の名前FieldControl で指定したフィールド コントロールは、レンダリングするオブジェクトを認識します。 |
|
モバイル アプリケーションのフォーム (表示、編集、新規作成) でフィールドをレンダリングするために使用できるコントロールを返します。 |
|
編集モードでレンダリングされるフィールド値を返します。このメソッドは、編集フォームと新規作成フォームに使用されます。 |
|
派生クラスで無効にされた場合、検証済みのフィールド値を返します。独自の検証やデータ シリアル化のロジックを使用するには、このメソッドを無効にします (基本メソッドも、ここから派生した SharePoint Foundation の多くのクラスも、検証ロジックを提供しません)。このメソッドでは、フィールド値オブジェクトの ToString メソッドを使用して、フィールド値オブジェクトを文字列に変換できます。よく行われるのは次のような無効化です。
詳細について、および無効化された GetValidatedString の例については、「ユーザー設定フィールド データ入力規則」を参照してください。 |
|
無効にして、フィールドがリストに追加された後のユーザー設定フィールド型ロジックを指定します。 |
|
無効にして、フィールドが更新された後のユーザー設定フィールド型ロジックを指定します。 |
|
無効にして、フィールドがリストから削除される前のユーザー設定フィールド型ロジックを指定します。 |
複雑なユーザー設定データ型の使用時に無効にすることの多い SPField クラスのメンバ
フィールド型で、親のフィールド型のデータ型とは異なる複雑なユーザー設定データ型が必要とされる場合、SPField クラスのいくつかのメンバーは、無効化が必要になる可能性が高くなります。このようなユーザー設定データ型を、ユーザー設定フィールド値クラスで定義します。詳細については、「[方法] ユーザー設定フィールド値クラスを作成する」を参照してください (ユーザー設定データ型を作成していない場合でも、状況によってはこれらのメンバーの無効化が必要になることもあります)。
SPField クラスのメンバ |
説明 |
---|---|
特定のリスト項目がフィールド内で値を持たない場合に、フィールドに使用できる既定値を、文字列として返します。 |
|
特定のリスト項目がフィールド内で値を持たない場合に、フィールドに使用できる既定値を返します。 |
|
フィールド値の型を返します。 |
|
フィールド値をオブジェクトとして返します。 |
|
フィールドのデータ値を文字列として返します。 |
|
フィールドのデータ値を HTML 形式の文字列として返します。この HTML 形式のフィールド値は、リスト項目のバージョン履歴ページなどのページで、直接フィールド値をレンダリングするために最もよく使用されます。ただし、この HTML 形式のフィールド値は表示フォームでは使用されません。表示フォームに対するフィールドのレンダリングは、通常、フィールド型の fldtype*.xml ファイルに指定された、Collaborative Application Markup Language (CAML) の DisplayPattern 要素からレンダリングされます。 |
|
「ユーザー設定フィールド動作の指定」の注意書きを参照してください。 |
|
表示および編集モードでのフィールド コントロールのデザイン時ビューに使用される、フィールド データのプレビュー値を返します。 |