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 イベント ハンドラーのバインド」を参照)。