イベント ハンドラーを作成する
最終更新日: 2010年4月8日
適用対象: SharePoint Foundation 2010
Visual Studio で SharePoint Foundation イベント ハンドラーを作成するには、"クラス ライブラリ" タイプの新しいプロジェクトを作成し、イベント レシーバー基本クラスの 1 つから継承します。継承元のイベント レシーバー基本クラスを選択するときは、イベント レシーバーのベースが、取得するイベントに適しているかどうか、また、バインド先のイベント ホストに適しているかどうかを確認します。
以下のコード例では、SPItemEventReceiver 基本クラスのメソッドを使用してオーバーライドする、ItemAdded と呼ばれるイベント レシーバーの定義を作成します。この基本クラスを使用するのは、アイテムがリストに追加されたときに発生するイベントを取得する必要があるからです。Web サイト レベルでイベントを取得する場合は、SPWebEventReceiver クラスから継承します。
重要 |
---|
SharePoint Foundation イベント、各イベントに適したイベント レシーバー、および各レシーバーにバインドできるイベント ホストの一覧を確認するには、「SharePoint イベント、イベント レシーバー、およびイベント ホストの表」を参照してください。 |
イベント レシーバーの定義を作成する
プロジェクトを作成したら、プロジェクトの既定の using ステートメントに加えて、using Microsoft.SharePoint を追加します。このプロジェクトでは、ERDefinition 名前空間を作成し、SPItemEventReceiver から継承するパブリック クラス ItemEvents を宣言します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
namespace ERDefinition
{
public class ItemEvents : SPItemEventReceiver
...
サンプルのイベント レシーバーでは、アイテムがリストまたはドキュメント ライブラリに追加されたことを検出する必要があるので、基本クラスの ItemAdded(SPItemEventProperties) メソッドをオーバーライドします。
public override void ItemAdded(SPItemEventProperties properties)
このメソッドは、アイテムのプロパティの情報を提供する SPItemEventProperties インスタンスをとります。
おわかりのように、この例のインベント ハンドラーはほとんど何も行っていません。日付と時刻のスタンプをリスト アイテム "Title" フィールドに追加し、Update() を呼び出します。
{
SPListItem item = properties.ListItem;
item["Title"] = item["Title"] + " - " + DateTime.Now;
item.Update();
}
イベント レシーバーの定義を作成したら、次はイベント ハンドラーをイベント ホストにバインドする必要があります。「SharePoint Foundation イベント ハンドラーのバインド」で、このプロセスの続きの手順を確認してください。
コードのリスト
上記の説明の完全なコード リストを以下に示します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
namespace ERDefinition
{
public class ItemEvents : SPItemEventReceiver
{
public override void ItemAdded(SPItemEventProperties properties)
{
SPListItem item = properties.ListItem;
item["Title"] = item["Title"] + " - " + DateTime.Now;
item.Update();
}
}
}
関連項目
タスク
概念
SharePoint Foundation のイベントについて