SharePoint 2010 にカスタム コンテンツ タイプを作成する

SharePoint クイックスタート バナー

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 プロジェクトを作成するには

  1. [スタート] メニュー、[すべてのプログラム]、[Microsoft Visual Studio 2010]、[Microsoft Visual Studio 2010] の順にクリックして、Visual Studio 2010 を起動します。

  2. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

  3. [新しいプロジェクト] ダイアログ ウィンドウの [インストールされているテンプレート] セクションで、[Visual C#]、[SharePoint]、[2010] の順にクリックします。

  4. プロジェクト アイテムから [空の SharePoint プロジェクト] を選択します。

  5. [名前] ボックスに「CreateContentType」と入力して、[OK] をクリックします。

  6. SharePoint カスタマイズ ウィザードで、この演習に使用するローカル Web サイト (https://localhost/SampleWebSite など) を入力します。

  7. 信頼レベルとして [ファーム ソリューションとして配置する] を選択し、[完了] をクリックします。

コンテンツ タイプを作成する

このタスクでは、コンテンツ タイプをフィーチャーとして作成し、イベント レシーバーを追加します。

コンテンツ タイプを作成するには

  1. ソリューション エクスプローラーで [Features] フォルダーを右クリックし、[フィーチャーの追加] をクリックします。

  2. [Feature1] を右クリックし、[イベント レシーバーの追加] をクリックします。Visual Studio によって、フィーチャー イベント レシーバーが Feature1 に追加されます。

  3. [Feature1.EventReceiver.cs] を右クリックし、[コードの表示] をクリックします。

  4. Feature1EventReceiver クラス内の FeatureActivated メソッドのコメントを解除します。

  5. 以下のコードを 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 というタイトルの既存のフィールドをコンテンツ タイプに追加する。

  6. FeatureDeactivating メソッドのコメントを解除します。

  7. 以下のコードを 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 を削除する。

  8. ソリューション エクスプローラーで [CreateContentType] を右クリックして、[配置] をクリックします。

プロジェクトが正しく機能することを確認する

このタスクでは、コンテンツ タイプと 2 つのフィールドが存在することを確認します。

プロジェクトをテストするには

  1. Internet Explorer を起動して、指定した Web サイトに移動します。

  2. 画面の左上セクションで、[サイトの操作] 、[サイトの設定] の順にクリックします。

  3. [ギャラリー] で、[サイト列] をクリックします。

  4. [グループごとに表示] オプションで、[カスタム列] をクリックします。

    新しいフィールド Team Project が表示されます。

    図 1. Team Project フィールド

    チーム プロジェクト フィールド

  5. [サイトの操作] 、[サイトの設定] の順にクリックします。

  6. [ギャラリー] で、[サイト コンテンツ タイプ] をクリックします。

  7. [グループごとに表示] オプションで、[カスタム コンテンツ タイプ] を選択します。

    新しいコンテンツ タイプ New Announcements が表示されます。

    図 2. New Announcements コンテンツ タイプ

    新しいお知らせのコンテンツ タイプ

次の手順