SharePoint 2010のイベントレシーバーの作成
Visual Studio 2010によるSharePoint 2010開発の基本(4)
ダウンロード サンプルファイル (18.5 KB)
本連載では、Visual Studio 2010によるSharePoint 2010開発を扱います。第4回となる今回は、SharePoint 2010のイベントレシーバーの作成方法を解説します。
はじめに
作成に入る前に、本連載の第1回『SharePoint 2010開発の紹介』を参考にして、SharePoint 2010の開発環境を整えてください。
対象読者
- Visual Studio 2010によるSharePoint 2010開発に関心がある開発者
- SharePoint 2010のイベントレシーバーの開発に関心がある開発者
SharePoint 2010のイベントとイベントレシーバー
SharePoint 2010では、Webサイト、リストやリストアイテムなどに対する処理や操作の前後に発生するさまざまなイベントが定義されています。
SharePointのイベントは、サイトイベント、Webイベント、リストイベントなど、主に5つの種類に分かれます。これら5つのイベントの種類にそれぞれ対応したイベントレシーバーのクラスがMicrosoft.SharePoint名前空間には用意されています(表1)。
| イベントの種類 | 説明 | 対応するイベントレシーバークラス |
| リストイベント | リストに対する処理の前後に発生するイベント | SPListEventReceiver |
| リスト項目イベント | リストのアイテムに対する処理の前後に発生するイベント | SPItemEventReceiver |
| リスト電子メールイベント | リストがメールを受信した時に発生するイベント | SPEmailEventReceiver |
| Webイベント | サイトコレクションやサイトに対する処理の前後に発生するイベント | SPWebEventReceiver |
| リストワークフローイベント | ワークフローに対する処理の前後に発生するイベント | SPWorkflowEventReceiver |
SPEmailEventReceiverクラスを除くどのイベントレシーバーも、SPEventReceiverBaseクラスから派生しています。また、どのイベントレシーバークラスも直接インスタンス化はせず、派生させて使用する必要があります。Visual Studio 2010でイベントレシーバープロジェクトを作成する際に、ウィザード内でどのイベントレシーバーを使用するかを選択することにより、そのイベントレシーバーの派生クラスを自動生成できます。
次に、イベントの種類別にすべてのイベントをまとめます(表2)。多くの場合、「~されています」と「~されました」のように、何かの処理や操作の前後にそれぞれイベントが発生することが分かります。これらをBeforeイベントとAfterイベントと呼びます。
| イベントの種類 | イベント | 説明 |
| リストイベント | FieldAdded | フィールドが追加されました |
| FieldAdding | フィールドが追加されています | |
| FieldDeleted | フィールドが削除されました | |
| FieldDeleting | フィールドが削除されています | |
| FieldUpdated | フィールドが更新されました | |
| FieldUpdating | フィールドが更新されています | |
| ListAdding | リストが追加されています | |
| ListDeleting | リストが削除されています | |
| ListAdded | リストが追加されました | |
| ListDeleted | リストが削除されました | |
| リスト項目イベント | ItemAdding | 項目が追加されています |
| ItemUpdating | 項目が更新されています | |
| ItemDeleting | 項目が削除されています | |
| ItemCheckingIn | 項目がチェックインされています | |
| ItemCheckingOut | 項目がチェックアウトされています | |
| temUncheckingOut | 項目のチェックアウトが取り消されています | |
| ItemAttachmentAdding | 項目に添付ファイルが追加されています | |
| ItemAttachmentDeleting | 項目から添付ファイルが削除されています | |
| ItemFileMoving | ファイルが移動されています | |
| ItemAdded | 項目が追加されました | |
| ItemUpdated | 項目が更新されました | |
| ItemDeleted | 項目が削除されました | |
| ItemCheckedIn | 項目がチェックインされました | |
| ItemCheckedOut | 項目がチェックアウトされました | |
| ItemUncheckedOut | 項目のチェックアウトが取り消されました | |
| ItemAttachmentAdded | 項目に添付ファイルが追加されました | |
| ItemAttachmentDeleted | 項目から添付ファイルが削除されました | |
| ItemFileMoved | ファイルが移動されました | |
| ItemFileConverted | ファイルが変換されました | |
| ContextEvent | リストがコンテキストイベントを受け取りました | |
| リスト電子メールイベント | EmailReceived | リストが電子メールメッセージを受け取りました |
| Webイベント | SiteDeleting | サイトコレクションが削除されています |
| WebDeleting | サイトが削除されています | |
| WebMoving | サイトが移動されています | |
| WebAdding | サイトがプロビジョニングされています | |
| SiteDeleted | サイトコレクションが削除されました | |
| WebDeleted | サイトが削除されました | |
| WebMoved | サイトが移動されました | |
| WebProvisioned | サイトがプロビジョニングされました | |
| リストワークフローイベント | WorkflowStarting | ワークフローが開始されています |
| WorkflowStarted | ワークフローが開始されました | |
| WorkflowPostponed | ワークフローが延期されました | |
| WorkflowCompleted | ワークフローが完了しました |
表2をご覧いただくと分かるように、サイト、リスト、リストアイテムなどSharePointの各構成要素に対して、さまざまなイベントが定義されています。これらのイベントを扱うイベントレシーバーを作成することにより、SharePointのサイトを細かく制御することが可能となります。たとえば、リスト作成時のBeforeイベントをキャッチし一定の条件に適合する場合にのみリスト作成を許可するなどの業務上のルールに応じた振る舞いを追加できます。
Visual Studio 2010で作成したイベントレシーバーは、SharePointのサイトに配置するだけで、特に他の手順を必要とすることなくサイト上で実行されます。
この記事は参考になりましたか?
- Visual Studio 2010によるSharePoint 2010開発の基本連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 広瀬 嘉久(株式会社ジェイテックジャパン)(ヒロセ ヨシヒサ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
