イベント ハンドラ フィーチャーを作成する

この例は、リストからアイテムが削除されないようにする、単純なイベント ハンドラを追加する方法を示しています。ここでは、2 つの作業が必要です。

  • Microsoft Visual Studio でのイベント ハンドラの作成

  • Windows SharePoint Services のフィーチャーとしてイベント ハンドラを追加

Visual Studio でイベント ハンドラを作成するには

  1. Visual Studio で、[ファイル] をクリックし、[新規作成] をポイントし、[プロジェクト] をクリックして、新規プロジェクトを作成します。

  2. [新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] ボックスで [Visual C#] を選択し、[テンプレート] ボックスの [クラス ライブラリ] を選択し、[名前] ボックスに「DeletingEventHandler」と入力し、[OK] をクリックします。

  3. ソリューション エクスプローラで [DeletingEventHandler] を選択し、[プロジェクト] メニューの [参照の追加] をクリックします。

  4. [参照の追加] ダイアログ ボックスで、[.NET] タブの [Microsoft.SharePoint] を選択し、[OK] をクリックします。

  5. コード エディタで、次のようにして Microsoft.SharePoint 名前空間をインポートします。

    using Microsoft.SharePoint;
    
  6. 次のようにして、クラスの名前を "DeletingAction" に変更し、このクラスを SPItemEventReceiver クラスから継承します。

    public class DeletingAction : SPItemEventReceiver
    
  7. クラス内に次のコードを追加して、ItemDeleting() メソッドを無効にします。

    public override void ItemDeleting(SPItemEventProperties properties)
    {
        properties.Cancel = true;
        properties.ErrorMessage = "Deleting items from " + properties.RelativeWebUrl + " is not supported.";
    }
    
  8. ソリューション エクスプローラで [DeletingEventHandler] ノードを右クリックし、[プロパティ] をクリックします。

  9. [プロパティ] ダイアログ ボックスで、[署名] タブをクリックし、[アセンブリに署名] を選択し、[厳密な名前のキー ファイルを選択してください] を選択し、[<新規作成…>] をクリックします。

  10. [厳密な名前キーの作成] ダイアログ ボックスで、[キー ファイル] ボックスに「DeletingEventHandler.snk」と入力し、必要であればキーのパスワードを指定し、[OK] をクリックします。

  11. プロジェクトをビルドするには、[ビルド] メニューの [ソリューションのビルド] をクリックし、Ctrl + Shift + B キーを押します。

  12. Visual Studio Projects フォルダ内の \DeletingEventHandler\bin\Debug フォルダを探し、DeletingEventHandler.dll ファイルをドラッグして Local_Drive:\WINDOWS\assembly にドロップし、グローバル アセンブリ キャッシュに DLL を配置します。

Windows SharePoint Services のフィーチャーとしてイベント ハンドラを追加するには

  1. Local_Drive:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/FEATURES に "DeletingEventHandler" というフォルダを作成します。

  2. 手順 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>
    
  3. 上記の Id 属性内の GUID プレースホルダを置き換えるには、Local_Drive:\Program Files\Microsoft Visual Studio 8 にある guidgen.exe を実行して GUID を生成します。

  4. アセンブリ、クラス、およびメソッドを識別してイベント ハンドラとして実装する 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>
    
  5. アセンブリの公開キー トークンを取得するには、Windows エクスプローラで Local_Drive:\WINDOWS\assembly にある DeletingEventHandler.dll ファイルを探してこのファイルを右クリックし、[プロパティ] をクリックし、[プロパティ] ダイアログ ボックスの [全般] タブで、トークンを選択し、コピーします。

  6. コマンド プロンプトで、ローカル ドライブの \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
    
  7. 指定した Web サイト上お知らせリスト内のアイテムの削除を試行して、イベント ハンドラ フィーチャーの効果を確認します。

See Also

概念

イベント

イベント登録

その他のリソース

イベントの基礎