SharePoint Foundation 2010 の新しいイベント バインド機能
最終更新日: 2010年4月8日
適用対象: SharePoint Foundation 2010
この記事の内容
SPSite レベルのバインド
XML イベント レシーバーのバインド
リスト テンプレートによるイベントのバインド
Microsoft SharePoint Foundation 2010 では、イベントをバインドできる範囲と方法が拡大されます。この革新には、個々のサイト (SPWeb) を対象範囲とする XML イベント レシーバーをバインドする機能を提供するだけでなく、サイト コレクション (SPSite) を対象範囲とするイベントをバインドする機能が含まれます。
SPSite レベルのバインド
リストとサイトの作成機能を向上するために、SharePoint Foundation 2010 では、SPSite レベルのイベント レシーバー コレクションがサポートされます。他のイベント レシーバー コレクションと同様に、このイベント レシーバー コレクションは、SPWebEventReceiver、SPListEventReceiver、および SPItemEventReceiver オブジェクトからのバインドを受け付けます。これらのすべてのイベント タイプは、サイト コレクション レベルの範囲 (つまり、SPSite) を対象とすることができます。ただし、SPEmailEventReceiver オブジェクトは、その実装方法のために、サイト コレクション レベルでは機能しません。
XML イベント レシーバーのバインド
SharePoint Foundation 2010 では、<Receivers> タグを使用することで、XML イベント レシーバーを SPWeb と SPSite の両方のインスタンスの対象範囲でバインドできます。
SharePoint フィーチャーがサイト コレクション レベルを対象範囲とする場合、<Receivers> タグはあいまいになる場合があります。このタグは、サイト全体のイベント バインドまたは最上位サイトのイベント バインドを示す可能性があるためです。ただし、default の動作では、サイト レベルが対象範囲となります。
したがって、フィーチャーの対象範囲をサイト コレクション レベルとする場合、Scope という属性を使用して、目的の対象範囲を指定する必要があります。この属性を "Site" に設定すると、サイト コレクションを対象範囲とするフィーチャー内に定義されたイベント レシーバーはサイト コレクション レベルでバインドされます。属性を "Web" に設定すると、サイト コレクションのフィーチャー用に定義されたイベント レシーバーは、そのサイト コレクションのルート Web サイトでバインドされます。
リスト テンプレートによるイベントのバインド
SharePoint Foundation 2010 では、ListTemplateId プロパティのセマンティクスを使用して、SPItemEventReceiver イベント レシーバーに基づいてイベントをバインドできます。この方法では、リストが作成されるときに、リストを対象範囲とするイベント レシーバー定義が作成されます。
この機能の実際的な結果の 1 つとして、次の例に示されているように、機能ベースの XML でバインドを指定できるようになります。
<Receivers ListTemplateId="301">
<Receiver>
<Name>Blog post event handler for new trackbacks</Name>
<Type>ItemAdded</Type>
<SequenceNumber>1000</SequenceNumber>
<Assembly>Trackback, Version=1.0.0.0, Culture=neutral, PublicKeyToken=64e9de3efe88d9da</Assembly>
<Class>Trackback.TrackbackEventsReceiver</Class>
<Data>Property Logger</Data>
</Receiver>
</Receivers>
前述の XML では、TrackbackEventsReceiver という名前のクラスがバインドされます。これは、SPItemEventReceiver クラスから派生します。TrackbackEventsReceiver は、テンプレート ID タイプ "301" のすべてのリストについては、そのリストの作成時に ItemAdded(SPItemEventProperties) メソッドを実装し、既存のリストについては、それぞれの機能がアクティブ化されたときにそのメソッドを実装します。
SharePoint Foundation 2010 では、指定したコンテンツ タイプの XML 内の SPItemEventReceiver オブジェクトに基づいてイベントをバインドすることもできます。