SharePoint Features.xml を使用してイベント ハンドラーをバインドする

最終更新日: 2010年4月9日

適用対象: SharePoint Foundation 2010

SharePoint 機能を使用して、Microsoft SharePoint Foundation 2010 の特定のコンテンツ タイプに対してイベント ハンドラーを定義できます。たとえば "顧客" というコンテンツ タイプを定義し、その顧客の動作として、関連付けられたイベント ハンドラーを扱うためのメタデータを定義することができます。

SharePoint 機能を使用する

コンテンツ タイプの定義には SharePoint 機能を使用します。機能でコンテンツ タイプを定義するには、次の 2 つの XML ファイルを作成します。

  • Feature.xml   新しい機能に必要なメタデータの定義に使用します。次のコード例は、サイト レベルの機能を定義し、一意の識別子を与えるというものです。さらに、ElementManifests 要素を使用して、機能に関する詳細情報を記述した別の XML ファイルを参照しています。

    <?xml version="1.0" encoding="utf-8"?>
    <Feature Scope="Web" 
      Title="Simple Event Handler Registration" 
      Id="A6B8687A-3200-4b01-AD76-09E8D163FB9A" 
      xmlns="https://schemas.microsoft.com/sharepoint/">
      <ElementManifests>
        <ElementManifest Location="elements.xml"/>
      </ElementManifests>
    </Feature>
    
  • Elements.xml   イベント ハンドラーと当該クラス自身をカプセル化したアセンブリを定義します。さらに、同じ機能に対して複数のイベント ハンドラーがある場合は、これを順序付けるシーケンス番号も定義します。次の例は、リスト アイテムの削除と追加を行うためにイベントに応答するイベント レシーバーをバインドする方法を示します。

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="https://schemas.microsoft.com/sharepoint/">
      <Receivers ListTemplateId="104">
        <Receiver>
          <Name>MyEventHandlers</Name>
          <Type>ItemDeleting</Type>
          <SequenceNumber>10000</SequenceNumber>
          <Assembly>MyEventHandlers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=4358f2a5344ff0dc</Assembly>
          <Class>MyEventHandlers.SimpleEventHandler</Class>
          <Data></Data>
          <Filter></Filter>
        </Receiver>
        <Receiver>
          <Name>MyEventHandlers</Name>
          <Type>ItemAdded</Type>
          <SequenceNumber>10000</SequenceNumber>
          <Assembly>MyEventHandlers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=4358f2a5344ff0dc</Assembly>
          <Class>MyEventHandlers.SimpleEventHandler</Class>
          <Data></Data>
          <Filter></Filter>
        </Receiver>
      </Receivers>
    </Elements>
    

コンテンツ タイプについて

コンテンツ タイプは、SharePoint Foundation データ ストア内の再利用可能な文書パーツです。多くの場合、コンテンツ タイプには、1 つ以上のイベント レシーバーが XML 定義の一部として含まれています。たとえば、コンテンツ タイプをターゲット リストにバインドしている場合、そのコンテンツ タイプに含まれるイベント レシーバーはターゲット リストに登録 (バインド) されています。

注意注意

イベントおよびイベント レシーバーについて説明するときに使用される "登録する" と "バインドする" という用語は同じ意味で使用されることがあります。このドキュメントでは、イベント レシーバーを "バインドする" という表現を使用していますが、イベント レシーバーを "登録する" という表現が出現することもあります。この 2 つの用語は同じことを意味します。

Windows SharePoint Services 3.0 では、データ ストアに関してコンテンツ タイプという概念が導入されました。簡単に言うと、コンテンツ タイプによって再利用という考え方が導入されています。コンテンツ タイプを使用すると、いくつかの定義と関連する動作を組み入れたオブジェクトの「クラス」を作成できます。たとえば、型名、フィールド、形式、業務処理、保持期間、監査機能、イベント処理などを作成できます。

さらに、SharePoint のリストやライブラリを使って、複数のコンテンツ タイプを操作することもできます。この場合、これらのクラスを 1 つ以上リストやライブラリに結びつけて、機能や動作を追加することができます。たとえば顧客リストを連絡先というコンテンツ タイプで拡張できます。連絡先コンテンツ タイプには、連絡先名、役割、電話番号などのフィールドや、固有の動作が定義されていて、これを顧客リストに追加することになります。

特定のリストまたはライブラリに対して、または特定のリストまたはライブラリの集合に対してイベント ハンドラーをバインドする必要がある場合は、通常は、機能レベルでバインドを行います。ただし、適切なオブジェクトの EventReceivers プロパティを使用して (たとえば、コンテンツ タイプの場合は EventReceivers を、リスト オブジェクトの場合は EventReceivers を使用して) これを行うこともできます。

リストおよびライブラリに関しては、機能は SharePoint Foundation のアトミックな概念であり、以前はすべて 1 つのファイル (Schema.xml または Onet.xml) に統合されていた Collaborative Application Markup Language (CAML) の特定のセクションを表します。これらの CAML セクションは分離され、さまざまな場所で再利用できるようになりました。リストの構造とフィールド定義は、SharePoint 機能を使用して作成するようになりました。

イベント ハンドラーのバインドに関しては、フィーチャーの概念を使用して、特定の 1 つのリストまたはライブラリに対して (リストまたはライブラリの GUID を指定する)、または特定の種類のリストまたはライブラリ (すべてのドキュメント ライブラリやすべてのフォーム ライブラリなど) に対してアセンブリをバインドできます。機能を定義するには、同じ種類の 2 つの XML ファイル (Feature.xml および Element.xml) を作成します (「SharePoint Foundation イベント ハンドラーのバインド」を参照)。

関連項目

タスク

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

概念

フィーチャーの使用

イベント登録

例: リスト アイテム イベント ハンドラーを作成する

フィーチャーの使用

データ更新のためのセキュリティ検証と投稿の作成

権限の昇格

その他の技術情報

コンテンツ タイプ