SharePoint 2010のイベントレシーバーの作成
Visual Studio 2010によるSharePoint 2010開発の基本(4)
ダウンロード サンプルファイル (18.5 KB)
リスト項目イベントのイベントレシーバーのサンプル作成
それでは早速、Visual Studio 2010を使用してSharePoint 2010のイベントレシーバーを作成してみましょう。
サンプルの概要
サンプルとして、リスト項目イベントを扱うイベントレシーバーを作成してみます。
既存の「お知らせ」リストに対して、いくつかのイベント処理を追加します。まず、新しいアイテムの追加前イベントを受け取り、同名のタイトルが既に存在している場合はエラーメッセージを表示しアイテムを追加できないようにします(図1)。さらに、リストの上限アイテム数(ここでは3個と定義)を超えた場合にもエラーメッセージを表示するようにします。
次に、新しいアイテムの追加後イベントを受け取り、追加されたアイテムの有効期限が未設定だった場合には、有効期限を今日の日付から1か月後に自動設定します。
最後に、アイテムの削除前イベントを受け取り、「お知らせ」リストからアイテムを削除できないようにします。
まとめると今回のサンプルでは、リスト項目イベントの次のイベントを扱います(表3)。
| イベント | 発生時に実行する処理 |
| ItemAdding | 同名タイトルの存在チェック、アイテム数の上限チェック |
| ItemAdded | 有効期限の自動設定 |
| ItemDeleting | アイテムの削除禁止 |
サンプルの作成
以下の手順で、サンプルを作成します。
[1]新しいプロジェクトを作成する
SharePoint 2010のイベントレシーバー用の新しいプロジェクトを作成します。
管理者権限でVisual Studio 2010を起動します。[新しいプロジェクト]ダイアログボックスで、[インストールされたテンプレート]から[Visual C#]-[SharePoint]-[2010]を選択し、プロジェクトテンプレートの一覧から[イベントレシーバー]を選択します。[名前]には「EventReceiverProjectSample」と入力し、[OK]ボタンをクリックします(図2)。
[デバッグのサイトとセキュリティレベルの指定]ダイアログボックスが表示されます。[デバッグに使用するローカルサイト]には、使用するSharePointサイトのURLを入力します。信頼レベルは今回もファームソリューションを選択し、[次へ]ボタンをクリックします(図3)。
[イベントレシーバー設定の選択]ダイアログボックスが表示されます。[使用するイベントレシーバーの種類]から[リスト項目イベント]を選択し、[イベントソースとなる項目]から[お知らせ]を選択します。次に、[次のイベントを処理]の一覧から[項目が追加されています]、[項目が削除されています]、[項目が追加されました]の3つをチェックします。最後に、[完了]ボタンをクリックします(図4)。
これで、イベントレシーバーのプロジェクトが作成されました。ソリューションエクスプローラーでプロジェクト作成直後の状態を確認すると、次のようになっています(図5)。
さらに、生成されたイベントレシーバー(EventReceiver1.cs)を開いてみると、リスト1のようになっています。
using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
namespace EventReceiverProjectSample.EventReceiver1
{
/// <summary>
/// リスト項目イベント
/// </summary>
public class EventReceiver1 : SPItemEventReceiver
{
/// <summary>
/// 項目が追加されています.
/// </summary>
public override void ItemAdding(SPItemEventProperties properties)
{
base.ItemAdding(properties);
}
/// <summary>
/// 項目が削除されています.
/// </summary>
public override void ItemDeleting(SPItemEventProperties properties)
{
base.ItemDeleting(properties);
}
/// <summary>
/// 項目が追加されました.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
}
}
}
リスト項目イベントを扱うイベントレシーバーであるSPItemEventReceiverクラスを派生させたEventReceiver1クラスが生成されています。そして、先ほど[イベントレシーバー設定の選択]ダイアログボックスでチェックしたリスト項目イベントの3つのイベントに対するハンドラーも生成されていることが分かります。以降の手順で、これらのメソッド内に処理を記述していきます。
この記事は参考になりましたか?
- 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
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア


![図2 [新しいプロジェクト]ダイアログボックス](http://cz-cdn.shoeisha.jp/static/images/article/5984/5984_02_s.gif)
![図3 [デバッグのサイトとセキュリティレベルの指定]ダイアログボックス](http://cz-cdn.shoeisha.jp/static/images/article/5984/5984_03_s.gif)
![図4 [イベントレシーバー設定の選択]ダイアログボックス](http://cz-cdn.shoeisha.jp/static/images/article/5984/5984_04_s.gif)