チュートリアル: フィーチャーのイベント レシーバーの追加

フィーチャーのイベント レシーバーは、次のいずれかのフィーチャー関連のイベントが SharePoint 内で発生した場合に実行されるメソッドです。

  • フィーチャーがインストールされた。

  • フィーチャーがアクティブ化された。

  • フィーチャーが非アクティブ化された。

  • フィーチャーが削除された。

このチュートリアルでは、SharePoint プロジェクト内のフィーチャーにイベント レシーバーを追加する方法について説明します。 ここでは、次のタスクについて説明します。

  • フィーチャーのイベント レシーバーを備えた空のプロジェクトを作成する。

  • FeatureDeactivating メソッドを処理する。

  • お知らせリストに対し、SharePoint プロジェクトのオブジェクト モデルを使用してお知らせを追加する。

注意

お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio の設定」を参照してください。

必須コンポーネント

このチュートリアルを実行するには、次のコンポーネントが必要です。

フィーチャーのイベント レシーバー プロジェクトの作成

まず、フィーチャーのイベント レシーバーを含んだプロジェクトを作成します。

フィーチャーのイベント レシーバーを備えたプロジェクトを作成するには

  1. [ファイル] メニューの [新規作成] をポイントし、[新しいプロジェクト] をクリックして、[新しいプロジェクト] ダイアログ ボックスを表示します。

  2. [Visual C#] または [Visual Basic][SharePoint] ノードを展開して、[2010] をクリックします。

  3. [テンプレート] ペインの [空のプロジェクト] をクリックします。

    フィーチャーのイベント レシーバーには、専用のプロジェクト テンプレートがないため、この種類のプロジェクトを使用します。

  4. [プロジェクト名] ボックスに「FeatureEvtTest」と入力し、[OK] をクリックします。SharePoint カスタマイズ ウィザードが表示されます。

  5. [デバッグのサイトとセキュリティ レベルの指定] ページで、新しいカスタム フィールド項目の追加先となる SharePoint サーバー サイトの URL を入力するか、既定の場所 (http://<system name>/) を使用します。

  6. [この SharePoint ソリューションの信頼レベル] セクションで、[ファーム ソリューションとして配置する] をクリックし、[完了] をクリックします。

    サンドボックス ソリューションとファーム ソリューションの違いの詳細については、「サンドボックス ソリューションの考慮事項」を参照してください。

フィーチャーへのイベント レシーバーの追加

今度は、フィーチャーにイベント レシーバーを追加し、フィーチャーが非アクティブ化されたときに実行されるコードを追加します。

フィーチャーにイベント レシーバーを追加するには

  1. [フィーチャー] ノードを右クリックし、[フィーチャーの追加] を選択して、フィーチャーを作成します。

    [フィーチャー] ノードに、Feature1 という名前のフィーチャーが表示されます。

  2. [フィーチャー] ノードの [Feature1] を右クリックし、[イベント レシーバーの追加] (イベント レシーバーの追加) を選択して、フィーチャーにイベント レシーバーを追加します。

    これで、Feature1 にコード ファイルが追加されます。 このファイルには、プロジェクトの開発言語に応じて、Feature1.EventReceiver.cs または Feature1.EventReceiver.vb という名前が付きます。

  3. イベント レシーバー クラスには、イベントとして機能する 4 つのメソッドが、コメント アウトされた状態で存在します。 FeatureDeactivating メソッドを次の内容で置き換えます。

    Public Overrides Sub FeatureDeactivating(ByVal properties As SPFeatureReceiverProperties)
        Try
            ' Get reference to SharePoint site.
            Dim site As SPSite = New SPSite("https://localhost")
            Dim web As SPWeb = site.OpenWeb("/")
            ' Get reference to Announcements list.
            Dim announcementsList As SPList = web.Lists("Announcements")
            ' Add new announcement to Announcements list.
            Dim oListItem As SPListItem = announcementsList.Items.Add
            oListItem("Title") = ("Deactivated Feature: " + properties.Definition.DisplayName)
            oListItem("Body") = (properties.Definition.DisplayName + (" was deactivated on: " + DateTime.Now.ToString))
            oListItem.Update()
        Catch e As Exception
            Console.WriteLine(("Error: " + e.ToString))
        End Try
    End Sub
    
    public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
    {
        try
        {
            // Get reference to SharePoint site.
            SPSite site = new SPSite("https://localhost");
            SPWeb web = site.OpenWeb("/");
            // Get reference to Announcements list.
            SPList announcementsList = web.Lists["Announcements"];
    
            // Add new announcement to Announcements list.
            SPListItem oListItem = announcementsList.Items.Add();
            oListItem["Title"] = "Deactivated Feature: " + properties.Definition.DisplayName;
            oListItem["Body"] = properties.Definition.DisplayName + " was deactivated on: " + DateTime.Now.ToString();
            oListItem.Update();
    
        }
    
        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.ToString());
        }
    
    }
    

フィーチャーのイベント レシーバーのテスト

次に、FeatureDeactivating メソッドによる SharePoint のお知らせリストへの出力がうまく作動するかどうかを、実際にフィーチャーを非アクティブ化してテストします。

フィーチャーのイベント レシーバーをテストするには

  1. プロジェクトの [アクティブな配置構成] プロパティを [アクティブ化しない] に設定します。

    このプロパティを設定することによって、あえてフィーチャーが SharePoint でアクティブ化されないようにし、フィーチャーのイベント レシーバーをデバッグします。 詳細については、「SharePoint ソリューションのデバッグ」を参照してください。

  2. F5 キーを押して、プロジェクトを実行し、SharePoint に配置します。

  3. SharePoint Web ページの一番上にある [サイトの操作] ボタンをクリックし、[サイトの設定] をクリックします。

  4. [サイトの設定] ページの [サイトの操作] セクションで、[サイトのフィーチャーの管理] リンクをクリックします。

  5. [サイトの機能] ページで、[FeatureEvtTest Feature1] フィーチャーの横に表示される [アクティブ化] ボタンをクリックします。

  6. [サイトの機能] ページで、[FeatureEvtTest Feature1] フィーチャーの横に表示される [非アクティブ化] ボタンをクリックします。 確認のリンクをクリックして、フィーチャーを非アクティブ化します。

  7. ナビゲーション バーの [お知らせ] リンクをクリックします。

    フィーチャーが非アクティブ化されると、お知らせ リストにお知らせが表示されます。

参照

処理手順

方法: イベント レシーバーを作成する

その他の技術情報

SharePoint ソリューションの開発