ユーザー設定フィールド クラスを作成する

最終更新日: 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 つを派生元とする必要があります。

クラス

説明

SPFieldBoolean

Boolean のフィールド型を表します。

SPFieldChoice

選択のフィールド型を表します。

SPFieldCurrency

通貨のフィールド型を表します。

SPFieldDateTime

日時のフィールド型を表します。

SPFieldLookup

ルックアップ フィールドを表します。SPFieldLookup オブジェクトに対するフィールド値は、SPFieldLookupValue オブジェクトに格納されます。

SPFieldMultiChoice

複数選択のフィールド型を表します。SPFieldMultiChoice オブジェクトに対するフィールド値は、SPFieldMultiChoiceValue オブジェクトに格納されます。

SPFieldMultiColumn

複数列のフィールド型を表します。SPFieldMultiColumn オブジェクトに対するフィールド値は、SPFieldMultiColumnValue オブジェクトに格納されます。

SPFieldMultiLineText

複数行テキストのフィールド型を表します。

SPFieldNumber

数値のフィールド型を表します。

SPFieldRatingScale

評価のフィールド型を表します。SPFieldRatingScale オブジェクトに対するフィールド値は、SPFieldRatingScaleValue オブジェクトに格納されます。

SPFieldText

単一行テキストのフィールド型を表します。

SPFieldUrl

URL のフィールド型を表します。SPFieldUrl オブジェクトに対するフィールド値は、SPFieldUrlValue オブジェクトに格納されます。

SPFieldUser

SharePoint Foundation ユーザーを表します。

注意

ユーザー定義フィールド値クラスの作成の詳細については、「[方法] ユーザー設定フィールド値クラスを作成する」を参照してください。

ユーザー設定フィールド動作の指定

ユーザー設定フィールド型を派生させるフィールド クラスを選択した後は、そのクラスのメンバのうち無効にするものを選択できます。フィールド型を特徴付けるプロパティと動作のほとんどはクラスに含まれているので、新しい実装で無効にする SPField の派生クラスを選択するだけで、さまざまな無効指定を行うことができます。

たとえば、SPField クラスには以下に示すメンバがあり、ユーザー設定フィールド型を開発する際には、必要に応じてこれらの実装を無効にできます。

注意

ここに挙げるメンバのほとんどについて、SPField クラスの既定の実装は、有用な動作をするようにはなっていません。たとえば、GetFieldValue は、渡された内容を返すだけです。また、GetValidatedString は、検証ロジックを含まない値クラスの ToString メソッドを呼び出すだけです。したがって、ユーザー設定フィールド型クラスが SPField から直接派生している場合は、このうち任意のメンバを無効にして、必要な目的を達成する別の方法を指定する必要があります

無効化が必要になることの多い SPField クラスのメンバ

SPField クラスのメンバー

説明

FieldRenderingControl

表示、編集、新規の各フォーム内、およびフィールド コントロールを使用する任意のページ内で、フィールドをレンダリングするために使用できるコントロールを返します。レンダリング コントロールをインスタンス化するオブジェクトは、その Field プロパティに、レンダリング対象のフィールド オブジェクトへの逆参照を保持します。この逆参照が示すように、これら 2 つのオブジェクトはパートナーです。SPField の派生オブジェクトは、コンテンツ データベースとの連携を処理し、一方、BaseFieldControl の派生レンダリング コントロールは、ユーザーとの連携のほか、ユーザー インターフェイス (UI) へのフィールドのレンダリングを処理します。ただし、ユーザー設定フィールドは、必ずしもレンダリング コントロールでレンダリングする必要はありません。フィールド定義で定義された RenderPattern でもレンダリングできます。この場合、FieldRenderingControl プロパティは null にできます。最もよくあるパターンとしては、新規モードと編集モードでフィールドをレンダリングするときにはレンダリング コントロールを使用し、表示モードでレンダリングするときにはレンダリング パターンを使用します。

レンダリング コントロールを使用する場合は、ユーザー設定フィールド クラスによって、FieldRenderingControl プロパティの get アクセサーを無効にする必要があります。これには、次の標準的なパターンのコードを使用します。

public override BaseFieldControl FieldRenderingControl
{
    [SharePointPermission(SecurityAction.LinkDemand, ObjectModel = true)]
    get 
    {
        BaseFieldControl fieldControl = new field_type_nameFieldControl();
        fieldControl.FieldName = this.InternalName;
        return fieldControl;
    }
}
Public Overrides ReadOnly Property FieldRenderingControl() As BaseFieldControl
    <SharePointPermission(SecurityAction.LinkDemand, ObjectModel := True)> _
    Get
        Dim fieldControl As BaseFieldControl = New field_type_nameFieldControl()
        fieldControl.FieldName = Me.InternalName
        Return fieldControl
    End Get
End Property

アクセス許可属性では、SharePoint Foundation オブジェクト モデルを使用するためのアクセス許可が設定されたコードだけに、プロパティの読み取りを許可しています。フィールド オブジェクトの内部名を FieldName プロパティに割り当てている行では、フィールド オブジェクトへの Field プロパティの割り当ても行っています。 こうすることで、フィールド型の名前FieldControl で指定したフィールド コントロールは、レンダリングするオブジェクトを認識します。

FieldRenderingMobileControl

モバイル アプリケーションのフォーム (表示、編集、新規作成) でフィールドをレンダリングするために使用できるコントロールを返します。

GetFieldValueForEdit

編集モードでレンダリングされるフィールド値を返します。このメソッドは、編集フォームと新規作成フォームに使用されます。

GetValidatedString

派生クラスで無効にされた場合、検証済みのフィールド値を返します。独自の検証やデータ シリアル化のロジックを使用するには、このメソッドを無効にします (基本メソッドも、ここから派生した SharePoint Foundation の多くのクラスも、検証ロジックを提供しません)。このメソッドでは、フィールド値オブジェクトの ToString メソッドを使用して、フィールド値オブジェクトを文字列に変換できます。よく行われるのは次のような無効化です。

  • ユーザーがフィールドに指定した値が無効な場合、または必須フィールドの値が null の場合に、SPFieldValidationException を発生させる。この例外は、SharePoint Foundation でユーザーが無効な値を保存しようとしたときに発生します。たとえば、新規作成フォームは開いたままで、例外の Message プロパティから抽出されたエラー メッセージが無効なフィールドの横に表示されます。

  • 値がカスタム検証を通過した場合にのみ、基本の GetValidatedString を呼び出す。

詳細について、および無効化された GetValidatedString の例については、「ユーザー設定フィールド データ入力規則」を参照してください。

OnAdded

無効にして、フィールドがリストに追加された後のユーザー設定フィールド型ロジックを指定します。

OnUpdated

無効にして、フィールドが更新された後のユーザー設定フィールド型ロジックを指定します。

OnDeleting

無効にして、フィールドがリストから削除される前のユーザー設定フィールド型ロジックを指定します。

複雑なユーザー設定データ型の使用時に無効にすることの多い SPField クラスのメンバ

フィールド型で、親のフィールド型のデータ型とは異なる複雑なユーザー設定データ型が必要とされる場合、SPField クラスのいくつかのメンバーは、無効化が必要になる可能性が高くなります。このようなユーザー設定データ型を、ユーザー設定フィールド値クラスで定義します。詳細については、「[方法] ユーザー設定フィールド値クラスを作成する」を参照してください (ユーザー設定データ型を作成していない場合でも、状況によってはこれらのメンバーの無効化が必要になることもあります)。

SPField クラスのメンバ

説明

DefaultValue

特定のリスト項目がフィールド内で値を持たない場合に、フィールドに使用できる既定値を、文字列として返します。

DefaultValueTyped

特定のリスト項目がフィールド内で値を持たない場合に、フィールドに使用できる既定値を返します。

FieldValueType

フィールド値の型を返します。

GetFieldValue

フィールド値をオブジェクトとして返します。

GetFieldValueAsText

フィールドのデータ値を文字列として返します。

GetFieldValueAsHtml

フィールドのデータ値を HTML 形式の文字列として返します。この HTML 形式のフィールド値は、リスト項目のバージョン履歴ページなどのページで、直接フィールド値をレンダリングするために最もよく使用されます。ただし、この HTML 形式のフィールド値は表示フォームでは使用されません。表示フォームに対するフィールドのレンダリングは、通常、フィールド型の fldtype*.xml ファイルに指定された、Collaborative Application Markup Language (CAML) の DisplayPattern 要素からレンダリングされます。

GetValidatedString

ユーザー設定フィールド動作の指定」の注意書きを参照してください。

PreviewValueTyped

表示および編集モードでのフィールド コントロールのデザイン時ビューに使用される、フィールド データのプレビュー値を返します。

関連項目

タスク

[ウォークスルー] ユーザー設定フィールド型を作成する

概念

[方法] ユーザー設定フィールド型を作成する

ユーザー設定フィールド型

ユーザー設定フィールド データ入力規則

[方法] ユーザー設定フィールド値クラスを作成する