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