イベント ハンドラ フィーチャーを作成する
この例は、リストからアイテムが削除されないようにする、単純なイベント ハンドラを追加する方法を示しています。ここでは、2 つの作業が必要です。
Microsoft Visual Studio でのイベント ハンドラの作成
Windows SharePoint Services のフィーチャーとしてイベント ハンドラを追加
Visual Studio でイベント ハンドラを作成するには
Visual Studio で、[ファイル] をクリックし、[新規作成] をポイントし、[プロジェクト] をクリックして、新規プロジェクトを作成します。
[新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] ボックスで [Visual C#] を選択し、[テンプレート] ボックスの [クラス ライブラリ] を選択し、[名前] ボックスに「DeletingEventHandler」と入力し、[OK] をクリックします。
ソリューション エクスプローラで [DeletingEventHandler] を選択し、[プロジェクト] メニューの [参照の追加] をクリックします。
[参照の追加] ダイアログ ボックスで、[.NET] タブの [Microsoft.SharePoint] を選択し、[OK] をクリックします。
コード エディタで、次のようにして Microsoft.SharePoint 名前空間をインポートします。
using Microsoft.SharePoint;
次のようにして、クラスの名前を "DeletingAction" に変更し、このクラスを SPItemEventReceiver クラスから継承します。
public class DeletingAction : SPItemEventReceiver
クラス内に次のコードを追加して、ItemDeleting() メソッドを無効にします。
public override void ItemDeleting(SPItemEventProperties properties) { properties.Cancel = true; properties.ErrorMessage = "Deleting items from " + properties.RelativeWebUrl + " is not supported."; }
ソリューション エクスプローラで [DeletingEventHandler] ノードを右クリックし、[プロパティ] をクリックします。
[プロパティ] ダイアログ ボックスで、[署名] タブをクリックし、[アセンブリに署名] を選択し、[厳密な名前のキー ファイルを選択してください] を選択し、[<新規作成…>] をクリックします。
[厳密な名前キーの作成] ダイアログ ボックスで、[キー ファイル] ボックスに「DeletingEventHandler.snk」と入力し、必要であればキーのパスワードを指定し、[OK] をクリックします。
プロジェクトをビルドするには、[ビルド] メニューの [ソリューションのビルド] をクリックし、Ctrl + Shift + B キーを押します。
Visual Studio Projects フォルダ内の \DeletingEventHandler\bin\Debug フォルダを探し、DeletingEventHandler.dll ファイルをドラッグして Local_Drive:\WINDOWS\assembly にドロップし、グローバル アセンブリ キャッシュに DLL を配置します。
Windows SharePoint Services のフィーチャーとしてイベント ハンドラを追加するには
Local_Drive:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/FEATURES に "DeletingEventHandler" というフォルダを作成します。
手順 1. で作成したフォルダに、次に示すような Feature.xml ファイル ファイルを作成します。このファイルは、フィーチャーとその要素マニフェスト ファイルを識別し、フィーチャーの範囲を Web site に設定します。
<Feature Scope="Web" Title="Deleting Event Handler" Id="GUID" xmlns="https://schemas.microsoft.com/sharepoint/"> <ElementManifests> <ElementManifest Location="Elements.xml"/> </ElementManifests> </Feature>
上記の Id 属性内の GUID プレースホルダを置き換えるには、Local_Drive:\Program Files\Microsoft Visual Studio 8 にある guidgen.exe を実行して GUID を生成します。
アセンブリ、クラス、およびメソッドを識別してイベント ハンドラとして実装する Elements.xml ファイルを DeletingEventHandler フォルダに作成します。この例では、ListTemplateId 属性に指定されているように、サイトのすべてのお知らせリストに対してイベント ハンドラを適用しています。その他の既定の Windows SharePoint Services リスト テンプレート タイプの ID については、ListTemplate 要素の Type 属性の説明を参照してください。
<Elements xmlns="https://schemas.microsoft.com/sharepoint/"> <Receivers ListTemplateId="104"> <Receiver> <Name>DeletingEventHandler</Name> <Type>ItemDeleting</Type> <SequenceNumber>10000</SequenceNumber> <Assembly>DeletingEventHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a26b5449ac4a4cf3</Assembly> <Class>DeletingEventHandler.DeletingAction</Class> <Data></Data> <Filter></Filter> </Receiver> </Receivers> </Elements>
アセンブリの公開キー トークンを取得するには、Windows エクスプローラで Local_Drive:\WINDOWS\assembly にある DeletingEventHandler.dll ファイルを探してこのファイルを右クリックし、[プロパティ] をクリックし、[プロパティ] ダイアログ ボックスの [全般] タブで、トークンを選択し、コピーします。
コマンド プロンプトで、ローカル ドライブの \Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN に移動して、次の各コマンドを入力します。これで、配置にフィーチャーをインストールして、指定したサブサイトでフィーチャーをアクティブ化し、Microsoft Internet Information Services (IIS) をリセットして変更内容を反映します。
stsadm -o installfeature -filename DeletingEventHandler\Feature.xml stsadm -o activatefeature -filename DeletingEventHandler\Feature.xml -url https://Server/Site/Subsite iisreset
指定した Web サイト上お知らせリスト内のアイテムの削除を試行して、イベント ハンドラ フィーチャーの効果を確認します。