SharePoint 2010 にカスタム コンテンツ タイプを作成する
SharePoint 2010 での Web 開発の概要: SharePoint 2010 にカスタム コンテンツ タイプを作成する方法について解説します。
最終更新日: 2011年1月12日
適用対象: SharePoint Foundation 2010 | SharePoint Server 2010 | Visual Studio | Visual Studio 2010
この記事の内容
SharePoint 2010 プロジェクトを作成する
コンテンツ タイプを作成する
プロジェクトが正しく機能することを確認する
次の手順
この演習では、カスタム コンテンツ タイプを作成します。次に、新しいテキスト フィールドと Web サイトに既存のフィールドの 2 つのフィールドをそのコンテンツ タイプに追加します。このタスクを完了するには、以下の作業を実行します。
SharePoint 2010 プロジェクトを作成する
コンテンツ タイプを作成する
プロジェクトが正しく機能することを確認する
SharePoint 2010 プロジェクトを作成する
このタスクでは、空の SharePoint 2010 プロジェクトを Microsoft Visual Studio 2010 に作成します。
SharePoint プロジェクトを作成するには
[スタート] メニュー、[すべてのプログラム]、[Microsoft Visual Studio 2010]、[Microsoft Visual Studio 2010] の順にクリックして、Visual Studio 2010 を起動します。
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ウィンドウの [インストールされているテンプレート] セクションで、[Visual C#]、[SharePoint]、[2010] の順にクリックします。
プロジェクト アイテムから [空の SharePoint プロジェクト] を選択します。
[名前] ボックスに「CreateContentType」と入力して、[OK] をクリックします。
SharePoint カスタマイズ ウィザードで、この演習に使用するローカル Web サイト (https://localhost/SampleWebSite など) を入力します。
信頼レベルとして [ファーム ソリューションとして配置する] を選択し、[完了] をクリックします。
コンテンツ タイプを作成する
このタスクでは、コンテンツ タイプをフィーチャーとして作成し、イベント レシーバーを追加します。
コンテンツ タイプを作成するには
ソリューション エクスプローラーで [Features] フォルダーを右クリックし、[フィーチャーの追加] をクリックします。
[Feature1] を右クリックし、[イベント レシーバーの追加] をクリックします。Visual Studio によって、フィーチャー イベント レシーバーが Feature1 に追加されます。
[Feature1.EventReceiver.cs] を右クリックし、[コードの表示] をクリックします。
Feature1EventReceiver クラス内の FeatureActivated メソッドのコメントを解除します。
以下のコードを FeatureActivated メソッドに挿入します。
using (SPWeb spWeb = properties.Feature.Parent as SPWeb) { SPContentType newAnnouncement = spWeb .ContentTypes .Cast<SPContentType>() .FirstOrDefault(c => c.Name == "New Announcements"); if (newAnnouncement != null) { newAnnouncement.Delete(); } SPField newField = spWeb.Fields .Cast<SPField>() .FirstOrDefault(f => f.StaticName == "Team Project"); if (newField != null) { newField.Delete(); } SPContentType myContentType = new SPContentType(spWeb.ContentTypes["Announcement"], spWeb.ContentTypes, "New Announcements"); myContentType.Group = "Custom Content Types"; spWeb.Fields.Add("Team Project", SPFieldType.Text, true); SPFieldLink projFeldLink = new SPFieldLink(spWeb.Fields["Team Project"]); myContentType.FieldLinks.Add(projFeldLink); SPFieldLink companyFieldLink = new SPFieldLink(spWeb.Fields["Company"]); myContentType.FieldLinks.Add(companyFieldLink); spWeb.ContentTypes.Add(myContentType); myContentType.Update(); }
Feature1 がアクティブ化されると、FeatureActivated メソッドが実行されます。このコードによって、以下の作業が実行されます。
存在する場合は、コンテンツ タイプ New Announcements およびフィールド Team Project を削除する。
New Announcements コンテンツ タイプをベースとして、親コンテンツ タイプ Announcement を作成する。
Team Project というタイトルのテキスト フィールドを作成し、コンテンツ タイプに追加する。
Company というタイトルの既存のフィールドをコンテンツ タイプに追加する。
FeatureDeactivating メソッドのコメントを解除します。
以下のコードを FeatureDeactivating メソッドに挿入します。
using (SPWeb spWeb = properties.Feature.Parent as SPWeb) { SPContentType myContentType = spWeb.ContentTypes["New Announcements"]; spWeb.ContentTypes.Delete(myContentType.Id); spWeb.Fields["Team Project"].Delete(); }
Feature1 が非アクティブ化されると、FeatureDeactivating メソッドが実行されます。このコードによって、以下の作業が実行されます。
コンテンツ タイプ New Announcementsを削除する。
テキスト フィールド Team Project を削除する。
ソリューション エクスプローラーで [CreateContentType] を右クリックして、[配置] をクリックします。
プロジェクトが正しく機能することを確認する
このタスクでは、コンテンツ タイプと 2 つのフィールドが存在することを確認します。
プロジェクトをテストするには
Internet Explorer を起動して、指定した Web サイトに移動します。
画面の左上セクションで、[サイトの操作] 、[サイトの設定] の順にクリックします。
[ギャラリー] で、[サイト列] をクリックします。
[グループごとに表示] オプションで、[カスタム列] をクリックします。
新しいフィールド Team Project が表示されます。
図 1. Team Project フィールド
[サイトの操作] 、[サイトの設定] の順にクリックします。
[ギャラリー] で、[サイト コンテンツ タイプ] をクリックします。
[グループごとに表示] オプションで、[カスタム コンテンツ タイプ] を選択します。
新しいコンテンツ タイプ New Announcements が表示されます。
図 2. New Announcements コンテンツ タイプ