チュートリアル: フィーチャー イベント レシーバーを追加する
フィーチャー イベント レシーバーは、SharePoint で次のフィーチャー関連のイベントのいずれかが発生したときに実行されるメソッドです。
フィーチャーがインストールされた。
フィーチャーがアクティブ化された。
フィーチャーが非アクティブ化された。
フィーチャーが削除された。
このチュートリアルでは、SharePoint プロジェクトのフィーチャーにイベント レシーバーを追加する方法について説明します。 次のタスクについて説明します。
フィーチャー イベント レシーバーを使用して空のプロジェクトを作成する。
FeatureDeactivating メソッドを操作する。
SharePoint プロジェクト オブジェクト モデルを使用して、お知らせリストにアナウンスを追加する。
Note
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
サポート対象エディションの Microsoft Windows および SharePoint。
Visual Studio.
フィーチャー イベント レシーバー プロジェクトを作成する
まず、フィーチャー イベント レシーバーを含むプロジェクトを作成します。
フィーチャー イベント レシーバーを含むプロジェクトを作成するには
メニュー バーで、[ファイル]>[新規作成]>[プロジェクト] を選択して、[新しいプロジェクト] ダイアログ ボックスを表示します。
[Visual C#] または [Visual Basic] の [SharePoint] ノードを展開し、[2010] ノードを選択します。
[テンプレート] ペインで、[SharePoint 2010 プロジェクト] テンプレートを選択します。
フィーチャー イベント レシーバーには、プロジェクト テンプレートがないため、このプロジェクトの種類を使用します。
[名前] ボックスに「FeatureEvtTest」と入力し、[OK] をクリックして SharePoint カスタマイズ ウィザードを表示します。
[デバッグのサイトとセキュリティ レベルの指定] ページで、新しいカスタム フィールド項目を追加する SharePoint サーバー サイトの URL を入力するか、既定の場所 (http://<システム名>/) を使用します。
[この SharePoint ソリューションの信頼レベル] セクションで、[ファーム ソリューションとして配置する] オプション ボタンをクリックします。
サンドボックス ソリューションとファーム ソリューションの比較の詳細については、「サンド ボックス ソリューションの考慮事項」を参照してください。
[完了] をクリックし、Feature1 という名前のフィーチャーが [フィーチャー] ノードの下に表示されることを確認します。
イベント レシーバーをフィーチャーに追加する
次に、フィーチャーにイベント レシーバーを追加し、フィーチャーが非アクティブになったときに実行されるコードを追加します。
イベント レシーバーをフィーチャーに追加するには
[フィーチャー] ノードのショートカット メニューを開き、[フィーチャーの追加] を選択してフィーチャーを作成します。
[フィーチャー] ノードで Feature1 のショートカット メニューを開き、[イベント レシーバーの追加] を選択して、このフィーチャーにイベント レシーバーを追加します。
これにより、Feature1 の下にコード ファイルが追加されます。 この場合、プロジェクトの開発言語に応じて、Feature1.EventReceiver.cs または Feature1.EventReceiver.vb のいずれかの名前が付けられます。
プロジェクトが Visual C# に記述されている場合は、イベント レシーバーの先頭に次のコードを追加します (まだ存在していない場合)。
using System;
イベント レシーバー クラスには、イベントとして機能するいくつかのコメントアウトされたメソッドが含まれています。 FeatureDeactivating メソッドを以下に置き換えます。
public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { try { // Get reference to SharePoint site. SPSite site = new SPSite("http://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 お知らせリストにアナウンスが出力されるかどうかをテストします。
フィーチャー イベント レシーバーをテストするには
プロジェクトの "アクティブな配置構成" プロパティの値を [アクティブ化なし] に設定します。
このプロパティを設定すると、SharePoint でフィーチャーをアクティブ化できなくなり、フィーチャー イベント レシーバーをデバッグできるようになります。 詳細については、SharePoint ソリューションのデバッグに関するページを参照してください。
F5 キーを押し、プロジェクトを実行して SharePoint に配置します。
SharePoint Web ページの上部にある [サイトの操作] メニューを開き、[サイトの設定] を選択します。
[サイトの設定] ページの [サイトの操作] セクションで、[サイト機能の管理] リンクを選択します。
[フィーチャー] ページで、FeatureEvtTest Feature1 フィーチャーの横にある [アクティブ化] をクリックします。
[フィーチャー] ページで、FeatureEvtTest Feature1 フィーチャーの横にある [非アクティブ化] をクリックし、[この機能を非アクティブ化] 確認リンクを選択してフィーチャーを非アクティブ化します。
[ホーム] をクリックします。
フィーチャーが非アクティブ化されると、お知らせリストにアナウンスが表示されます。