SharePoint ホスト型の SharePoint アドインにカスタム コンテンツ タイプを追加する
これは、SharePoint ホスト型の SharePoint アドインの開発の基本に関する記事のシリーズの 4 番目です。SharePoint アドインとこのシリーズの前の記事 (「SharePoint ホスト型の SharePoint アドインの作成を始める | 次の手順」にある記事) をよく理解しておいてください。
注:
SharePoint ホスト型アドインに関するこのシリーズを続けて学習してきた方は、このトピックでも引き続き使用できる Visual Studio ソリューションをお持ちです。 また、SharePoint_SP-hosted_Add-Ins_Tutorials でリポジトリをダウンロードして、BeforeContentType.sln ファイルを開くこともできます。
この記事では、新入社員オリエンテーション SharePoint アドインにカスタム コンテンツ タイプを追加します。
カスタム コンテンツ タイプを作成するには
ソリューション エクスプローラーで、プロジェクトを右クリックして、[追加]>[新しいフォルダー] の順に選択します。 フォルダーに Content Types という名前を付けます。
新しいフォルダーを右クリックし、[追加]>[新しいアイテム] の順に選択します。 [新しいアイテムの追加] ダイアログ ボックスが Office/SharePoint ノードに開きます。
[コンテンツ タイプ] を選択して NewEmployee という名前を付け、[追加] を選択します。 ウィザードで基本のコンテンツ タイプを選択するように求められたら、[アイテム] を選択して、[完了] を選択します。
コンテンツ タイプ デザイナーが自動的に開かない場合は、ソリューション エクスプローラーで NewEmployee コンテンツ タイプを選択して開きます。
デザイナーで [コンテンツ タイプ] タブを開き、テキスト ボックスに次のように入力します。
- コンテンツ タイプ名: NewEmployee
- 説明: 新入社員を表します。
- グループ名: 社員オリエンテーション
このタブのチェック ボックスがすべてオフになっていることを確認します。 [親コンテンツ タイプから列を継承する] チェック ボックスは既定でオンになっている場合があります。 必ずオフにしてください。 タブは次のようになります。
図 1. [コンテンツ タイプ] タブ
デザイナーの [列] タブを開きます。
グリッドで、[列を追加するにはここをクリックします] を選択し、列のドロップダウン リストを表示して、[部門] 列を追加します。 ドロップダウン リストには、表示名 [部門] としてリストされます。 [オリエンテーションのステージ] 列でも同じ手順を実行します。 (一覧にない場合は、正しい Visual Studio ソリューションを使用していない可能性があります。BeforeContentType.sln から始めます。)完了すると、グリッドは次のようになります。
図 2. [列] タブ
ファイルを保存し、デザイナーを閉じます。
elements.xml ファイルの変更
次の手順では、未加工の XML でコンテンツ タイプを直接操作する必要があるので、ソリューション エクスプローラーで NewEmployee コンテンツ タイプの子の elements.xml ファイルを選択します。
このファイルには、追加した 2 つの列に対する FieldRef 要素が既に存在します。 既に存在する 2 つの要素と対になるように、2 つの組み込みの SharePoint 列に対する FieldRef 要素を追加します。 以下は、これらの要素のマークアップです。 これらは、固定された ID を持つ組み込みのフィールドの種類なので、ID 属性に対して同じ GUID を使用する必要があります。 これらを、カスタムのサイト列に対する 2 つの FieldRef 要素よりも上に追加します。 これらのフィールドにカスタムの表示名 [Employee] を設定しました。
<FieldRef Name="LinkTitle" ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" DisplayName="Employee" /> <FieldRef Name="Title" ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" DisplayName="Employee" />
ファイルを保存して閉じます。
コンテンツ タイプの設定の変更
ソリューション エクスプローラーの [リスト] ノードを展開して、NewEmployeeOrientation を選択し、リスト タイプ デザイナーを開きます。
デザイナーで [列] タブを開き、[コンテンツ タイプ] ボタンを選択します。
[コンテンツ タイプの設定] ダイアログ ボックスで、NewEmployee コンテンツ タイプを追加します。
タイプの一覧で NewEmployee コンテンツ タイプを選択し、[既定値として設定] ボタンを選択します。
[アイテム] コンテンツ タイプを選択し、コンテンツ タイプ名の左に表示される小さな矢印を右クリックして [削除] を選択します。
この手順を [フォルダー] コンテンツ タイプについても繰り返し、NewEmployee だけがコンテンツ タイプの一覧に表示されるようにします。 ダイアログ ボックスは、次のようになります。
図 3. [コンテンツ タイプの設定] ダイアログ ボックス
[OK] を選択してダイアログ ボックスを閉じ、ファイルを保存して閉じます。
schema.xml ファイルと element.xml ファイルの変更
schema.xml ファイルを開きます。
Fields 要素を検索します。 Title、Division、OrientationStage の 3 つの Field 要素があるはずです。 (これらの要素は、この生成されたファイル内の 1 行に存在する場合があります。その場合は、改行で区切ります)。
ファイルを開いたまま、ソリューション エクスプローラーで [サイト列] フォルダーと Division ノードを展開し、Division の elements.xml ファイルを開きます。 schema.xml の Division の Field 要素は、Division elements.xml の Field 要素と正確に重複している必要があります。 一致していない場合は、サイト列の elements.xml ファイルの Field をコピーして、schema.xml ファイルの中で一致していない Field 要素の代わりに貼り付けます。 element.xml ファイルを閉じます。
OrientationStage の elements.xml ファイルを開きます。 ここでは、OrientationStage の 2 つのファイル内の Field 要素 (CHOICES 要素や MAPPINGS 要素など) のすべての子要素が完全に一致している必要があります。 一致していない場合は、elements.xml ファイルの Field をコピーして、schema.xml ファイルの中で一致していない Field 要素の代わりに貼り付けます。 element.xml ファイルを閉じます。
引き続き schema.xml ファイルにおいて、BaseViewID の値が "1" の View 要素で、子の ViewFields 要素を探し、次の 2 つの FieldRef 要素をその子として追加します。 既にここに存在している場合もありますが、ID 属性が欠けている可能性があります。 その場合は、ID 属性を追加します。
<FieldRef Name="Division" ID="{GUID from the Field element}" /> <FieldRef Name="OrientationStage" ID="{GUID from the Field element}" />
2 つのプレースホルダーの ID 属性の値を、schema.xml ファイルのそれ以前の NewEmployee の ContentType 要素の該当する Field 要素の GUID で置き換えます。 中かっこ "{}" で囲むのを忘れないでください。 "1" View の ViewFields は、次のようになります (GUID は異なる可能性があります)。
<ViewFields> <FieldRef Name="LinkTitle" ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" DisplayName="Employee" /> <FieldRef Name="Division" ID="{509d2d67-9a96-4596-9b3b-58449cdcc6ff}" /> <FieldRef Name="OrientationStage" ID="{38a3b54c-acf3-4ddf-b748-55c7c28d4cc2}" /> </ViewFields>
引き続き schema.xml ファイルで、BaseViewID の値が "0" の View 要素を探します。 その中の ViewFields 要素を探します。
ビュー "1" の ViewFields セクション全体をビュー "0" の ViewFields セクションにコピーします。 2 つのビューは、同一の ViewFields セクションを持つようになります。
schema.xml ファイルを保存して閉じます。
[リスト] フォルダーで、NewEmployeeOrientation ノードとその子リストのインスタンス NewEmployeesInSeattle の両方を展開します。 テンプレートの elements.xml を、インスタンスの elements.xml と明確に区別できるようになります。 インスタンスの方のファイルを開きます。
2 つの Field 要素を最初の Row 要素に追加して、Row 要素を次のようにします。
<Row> <Field Name="Title">Tom Higginbotham</Field> <Field Name="Division">Manufacturing</Field> <Field Name="OrientationStage">Tour of building</Field> </Row>
ファイルを保存して閉じます。
アドインを実行してテストする
F5 キーを使用して、アドインを展開して実行します。 Visual Studio が、テスト用 SharePoint サイトにアドインを一時的にインストールして、すぐにアドインを実行します。
アドインの既定のページが開いたら、[シアトルの新入社員] リンクを選択してユーザー設定リストのインスタンスを開きます。
リスト ページが開き、Division と OrientationStage 列がそこに表示されます。 これらはリストのコンテンツ タイプの一部であるため、ユーザーが手動で追加する必要はありません。 上部の項目は、追加したデータです。
図 4. New Employees in Seattle リスト
リストに新しい項目を追加し、既存の項目を編集してみてください。
デバッグ セッションを終了するには、ブラウザー ウィンドウを閉じるか、Visual Studio でデバッグを停止します。 F5 を選択するたびに、Visual Studio によって、以前のバージョンのアドインが取り消され、最新のバージョンがインストールされます。
このアドインおよび他の記事の Visual Studio ソリューションを操作し、ひととおり操作を終了したら前回のアドインを取り消すとよいでしょう。 ソリューション エクスプローラーでプロジェクトを右クリックして、[取り消し] を選択します。
次の手順
このシリーズの次の記事では、SharePoint ホスト型の SharePoint アドインで Web パーツをページに追加します。