SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Visual Studio 2010によるSharePoint 2010開発の基本

SharePoint 2010のイベントレシーバーの作成

Visual Studio 2010によるSharePoint 2010開発の基本(4)

リスト項目イベントのイベントレシーバーのサンプル作成

 それでは早速、Visual Studio 2010を使用してSharePoint 2010のイベントレシーバーを作成してみましょう。

サンプルの概要

 サンプルとして、リスト項目イベントを扱うイベントレシーバーを作成してみます。

 既存の「お知らせ」リストに対して、いくつかのイベント処理を追加します。まず、新しいアイテムの追加前イベントを受け取り、同名のタイトルが既に存在している場合はエラーメッセージを表示しアイテムを追加できないようにします(図1)。さらに、リストの上限アイテム数(ここでは3個と定義)を超えた場合にもエラーメッセージを表示するようにします。

 次に、新しいアイテムの追加後イベントを受け取り、追加されたアイテムの有効期限が未設定だった場合には、有効期限を今日の日付から1か月後に自動設定します。

 最後に、アイテムの削除前イベントを受け取り、「お知らせ」リストからアイテムを削除できないようにします。

図1 サンプルの実行例
図1 サンプルの実行例

 まとめると今回のサンプルでは、リスト項目イベントの次のイベントを扱います(表3)。

表3 サンプルで扱うイベント
イベント 発生時に実行する処理
ItemAdding 同名タイトルの存在チェック、アイテム数の上限チェック
ItemAdded 有効期限の自動設定
ItemDeleting アイテムの削除禁止

サンプルの作成

 以下の手順で、サンプルを作成します。

[1]新しいプロジェクトを作成する

 SharePoint 2010のイベントレシーバー用の新しいプロジェクトを作成します。

 管理者権限でVisual Studio 2010を起動します。[新しいプロジェクト]ダイアログボックスで、[インストールされたテンプレート]から[Visual C#]-[SharePoint]-[2010]を選択し、プロジェクトテンプレートの一覧から[イベントレシーバー]を選択します。[名前]には「EventReceiverProjectSample」と入力し、[OK]ボタンをクリックします(図2)。

図2 [新しいプロジェクト]ダイアログボックス
図2 [新しいプロジェクト]ダイアログボックス

 [デバッグのサイトとセキュリティレベルの指定]ダイアログボックスが表示されます。[デバッグに使用するローカルサイト]には、使用するSharePointサイトのURLを入力します。信頼レベルは今回もファームソリューションを選択し、[次へ]ボタンをクリックします(図3)。

図3 [デバッグのサイトとセキュリティレベルの指定]ダイアログボックス
図3 [デバッグのサイトとセキュリティレベルの指定]ダイアログボックス

 [イベントレシーバー設定の選択]ダイアログボックスが表示されます。[使用するイベントレシーバーの種類]から[リスト項目イベント]を選択し、[イベントソースとなる項目]から[お知らせ]を選択します。次に、[次のイベントを処理]の一覧から[項目が追加されています]、[項目が削除されています]、[項目が追加されました]の3つをチェックします。最後に、[完了]ボタンをクリックします(図4)。

図4 [イベントレシーバー設定の選択]ダイアログボックス
図4 [イベントレシーバー設定の選択]ダイアログボックス

 これで、イベントレシーバーのプロジェクトが作成されました。ソリューションエクスプローラーでプロジェクト作成直後の状態を確認すると、次のようになっています(図5)。

図5 作成直後のプロジェクト構成
図5 作成直後のプロジェクト構成

 さらに、生成されたイベントレシーバー(EventReceiver1.cs)を開いてみると、リスト1のようになっています。

リスト1 生成直後のイベントレシーバーのコード(EventReceiver1.cs)
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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5984 2011/06/23 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー