チュートリアル: カスタムのフィールド、コンテンツ タイプ、リスト定義、およびリスト インスタンスの作成
以降の手順では、Patient Name というカスタム フィールドと、そのフィールドを使用するコンテンツ タイプを SharePoint で作成する方法について説明します。 また、新しいコンテンツ タイプおよびフィールドを使用したリスト定義を、そのリスト定義に基づくリスト インスタンスと共にプロジェクトに追加する方法も取り上げます。
このチュートリアルでは、次のタスクについて説明します。
フィールドを作成してカスタマイズする。
フィールドを使用したコンテンツ タイプを作成してカスタマイズする。
リスト定義を作成してカスタマイズする。
リスト定義のリスト インスタンスを作成してカスタマイズする。
コンテンツ タイプおよびリスト インスタンス内の新しいフィールドを表示する。
注意
お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio の設定」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
サポート対象エディションの Microsoft Windows および SharePoint。 詳細については、「SharePoint ソリューションの開発要件」を参照してください。
Visual Studio 2010.
カスタム フィールド項目の作成
まず、Visual Studio で、Patient Name というカスタム フィールド項目を SharePoint プロジェクトとして作成します。
カスタム フィールド項目を作成するには
[ファイル] メニューの [新規作成] をポイントし、[新しいプロジェクト] をクリックして、[新しいプロジェクト] ダイアログ ボックスを表示します。
[Visual C#] または [Visual Basic] の [SharePoint] ノードを展開して、[2010] をクリックします。
[テンプレート] ペインで [空の SharePoint プロジェクト] をクリックし、プロジェクトの名前を「CustomField1」に変更して、[OK] をクリックします。
SharePoint カスタマイズ ウィザードが表示されます。 カスタム フィールド項目には対応するテンプレートがないため、"空のプロジェクト" テンプレートを使用します。
[デバッグのサイトとセキュリティ レベルの指定] ページで、新しいカスタム フィールド項目を追加する SharePoint サーバー サイトの URL を入力するか、既定の場所 (http://<system name>/) を使用します。
[この SharePoint ソリューションの信頼レベル] セクションでは、[サンドボックス ソリューションとして配置する] の既定値を使用します。
サンドボックス化ソリューションとファーム ソリューションの違いの詳細については、「サンドボックス ソリューションの考慮事項」を参照してください。
[完了] をクリックします。 プロジェクトがソリューション エクスプローラーに表示されます。
"空の要素" プロジェクト項目をプロジェクトに追加します。 これを行うには、ソリューション エクスプローラーでフィールドのプロジェクト ノード (CustomField1) をクリックし、[プロジェクト] の [新しい項目の追加] をクリックします。
[Visual C#] または [Visual Basic] の [SharePoint] ノードを展開して、[2010] をクリックします。
[テンプレート] ペインで [空の要素] を選択し、既定の名前の EmptyElement1 をそのままにして、[追加] をクリックします。
Elements.xml ファイルで、EmptyElement1 の下にある <Elements> タグの後に、次のコードを追加します。
<Field ID="{5744d18c-305e-4632-8bd1-09d134f4830d}" Type="Note" Name="PatientName" DisplayName="Patient Name" Group="A Custom Group"> </Field>
これで、Patient Name という名前のフィールドが追加されます。
重要
カスタム フィールドを追加するとき、SharePoint で正しく表示されるようにするには、ID、Type、Name、DisplayName、Group の各属性を指定する必要があります。 実際にはこれら 5 つの属性すべてが必要ですが、ステートメント入力候補では最初の 3 つのみが必要であると誤って示されます。
F5 キーを押して、プロジェクトを実行し、SharePoint に配置します。
スクリプトのデバッグが無効であることを示すメッセージが表示されたら、[はい] をクリックし、デバッグを続行します。
Visual Studio で Web アプリケーションをデバッグするのが、今回が初めてである場合、今後はデバッグを有効にするように、Web 構成ファイルを修正するかどうかをたずねられます。 このメッセージには、[はい] を選択してください。
SharePoint Web ページの一番上にある [サイトの操作] ボタンをクリックし、[サイトの設定] をクリックします。
[サイトの設定] ページの [ギャラリー] セクションで、[サイト内の列] リンクをクリックします。
[サイト内の列ギャラリー] ページを下へスクロールして [ユーザー設定の列] という見出しを表示すると、Patient Name という新しいフィールド項目が追加されているのがわかります。
ブラウザーを閉じます。
カスタム コンテンツ タイプの作成
次に、SharePoint 連絡先リストをベースに、前の手順で作成した新しいフィールドを使用したコンテンツ タイプを作成します。
カスタム コンテンツ タイプを作成するには
プロジェクトにコンテンツ タイプを追加します。 そのためには、ソリューション エクスプローラーで対象のプロジェクト ノードをクリックし、[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[Visual C#] または [Visual Basic] の [SharePoint] ノードを展開して、[2010] をクリックします。
[テンプレート] ペインで、[コンテンツ タイプ] を選択し、既定の名前の ContentType1 をそのまま使用します。
SharePoint カスタマイズ ウィザードで、新しいコンテンツ タイプのベースとして [連絡先] を選択し、[完了] をクリックします。
コンテンツ タイプの Elements.xml ファイルが開いて、編集できる状態になります。
Elements.xml の <FieldRefs> セクションに、次の内容をコピーして貼り付けます。
<FieldRef ID="{5744d18c-305e-4632-8bd1-09d134f4830d}" Name="PatientName" DisplayName="Patient Name" Required="TRUE"/>
ここで使用されている FieldRef ID は、カスタム フィールドに対して作成した Field ID を表します。
F5 キーを押して、プロジェクトを実行し、配置します。
SharePoint Web ページの一番上にある [サイトの操作] ボタンをクリックし、[サイトの設定] をクリックします。
[サイトの設定] ページの [ギャラリー] セクションで、[サイト コンテンツ タイプ] リンクをクリックします。
[サイト コンテンツ タイプ ギャラリー] ページには、たった今作成した新しいコンテンツ タイプ CustomField1 - ContentType1 が表示されます。 これをクリックすると、対応するフィールドが表示されます。 CustomField1 - ContentType1 のフィールド一覧を見ると、Patient Name というフィールドが追加されていることがわかります。
ブラウザーを閉じます。
リスト定義とリスト インスタンスの作成
今度は、新しいコンテンツ タイプおよびフィールドを使用したリスト定義とリスト インスタンスを作成します。 先ほど作成したコンテンツ タイプに基づくリスト定義を作成する関係上、ここでは、[コンテンツ タイプからのリスト定義] プロジェクト項目テンプレートを使用します。
リスト定義とリスト インスタンスを作成するには
プロジェクトにリスト定義を追加します。 そのためには、ソリューション エクスプローラーで対象のプロジェクト ノードをクリックし、[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[Visual C#] または [Visual Basic] の [SharePoint] ノードを展開して、[2010] をクリックします。
[テンプレート] ペインで、[コンテンツ タイプからのリスト定義] を選択し、既定の名前の ListDefinition1 をそのまま使用します。
[リスト定義の表示名] ボックスは、既定値 [CustomField1 - ListDefinition1] のままにします。
[リスト定義に使用するコンテンツ タイプ] の一覧では、既定値 (唯一の値) である [CustomField1 - ContentType1] を使用します。
これで、変更済みの新しい連絡先リストに基づく、カスタマイズ可能なリスト定義が作成されます。
[このリスト定義のリスト インスタンスを追加する] ボックスを選択して、リスト インスタンス プロジェクト項目をプロジェクトに追加します。 このリスト インスタンスが、新しいリスト定義のインスタンスになります。
[完了] をクリックします。 リスト定義がソリューション エクスプローラーに表示されます。
リスト定義のカスタマイズ
最後に、新しいフィールド (Patient Name) を追加してリスト定義をカスタマイズします。
重要
リスト定義の Elements.xml に含まれる Name 属性の値は、リスト定義プロジェクト項目のフォルダー名と一致している必要があります。一致していないと、プロジェクトの実行時にエラーが発生します。 Name 属性とフォルダー名とを確実に一致させるには、$ProjectItemName$ という置換パラメーター (トークン) を使用します。 SharePoint プロジェクトをパッケージ化して配置するときには、このトークンがリスト定義の実際のフォルダー名に変換されます。 Name 属性の値を、このトークン以外の値に変更すると、アプリケーションが正しく実行されない場合があります。 詳細については、「置き換え可能パラメーター」を参照してください。
リスト定義にフィールドを追加するには
ソリューション エクスプローラーで、ListDefinition1 の下の Schema.xml をダブルクリックして表示します。
Schema.xml には、リスト定義のすべてのフィールドに加え、名前やアドレスなどの要素が定義されています。 ファイルの上部にある <Fields> 要素の下に、次のフィールド定義がコンテンツ タイプ別に追加されています。
<FieldRef ID="{5744d18c-305e-4632-8bd1-09d134f4830d}" Name="PatientName" DisplayName="Patient Name" Required="TRUE" />
F5 キーを押して、プロジェクトを実行し、配置します。
SharePoint のクイック起動バーの [リスト] セクションで、[CustomField1 - ListInstance1] リンクをクリックします。
これは、新しいリスト定義のリスト インスタンスです。 新しい Patient Name フィールドは、まだリスト インスタンスの列として表示されていません。
[リスト ツール] メニュー タブで、ページの一番上にある [リスト] をクリックし、リボン バーの [このビューの変更] をクリックします。
使用できる列名の一覧で [Patient Name] をクリックし、[OK] をクリックします。 これで、Patient Name フィールドがリスト インスタンスに表示されます。