Partager via


Liaison d’un gestionnaire d’événements à l’aide du modèle objet SharePoint

Dernière modification : jeudi 8 avril 2010

S’applique à : SharePoint Foundation 2010

Vous pouvez lier un gestionnaire d’événements SharePoint Foundation en utilisant des classes de base du récepteur d’événements dans le modèle objet SharePoint Foundation. L’objectif de cet exemple de code est de lier l’événement ItemAdded créé dans Création d’un gestionnaire d’événements à une instance SPSite.

Notes

Microsoft Visual Studio 2010 fournit des types de projets qui effectuent automatiquement une grande partie du travail suivant lors de la création d’événements SharePoint. Toutefois, les exemples de code suivants sont fournis pour illustrer les mécanismes de création et de liaison d’événements.

Créer un projet de code de liaison

Ouvrez Microsoft Visual Studio et créez un projet d’application console de base et nommez-le BindItemEvents. Ensuite, créez une classe unique nommée Program.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.SharePoint;

namespace BindItemEvents
{
    class Program
    {
        static void Main(string[] args)

Ensuite, vous devez créer des références à vos objets site et Web. Notez que les références aux objets site et Web sont établies avec l’instruction using. La raison à cela est qu’elle appelle automatiquement la méthode Dispose() sur les objets après l’exécution du bloc de code. Une autre solution consiste à créer des instances des objets site et Web dans le bloc de code ; toutefois, si vous optez pour cette solution, vous devez veiller à vous débarrasser de ces objets une fois que vous n’en avez plus besoin.

        {
            using (SPSite site = new SPSite("https://localhost")) 
            {
                using (SPWeb web = site.OpenWeb())

À présent, nous allons créer une liste sur l’objet Web auquel nous avons créé une référence, c’est-à-dire, la bibliothèque de documents nommé « Shared Documents », puis vous allez lier la définition du récepteur d’événements.

{
                    SPList list = web.Lists["Shared Documents"];

                    SPEventReceiverDefinition def = list.EventReceivers.Add();

Notez, toutefois, que le simple fait d’ajouter le récepteur d’événements EventReceivers ne suffit pas. L’action de liaison requiert également la fourniture de valeurs de propriété pour définir le récepteur :

    def.Assembly = "ERDefinition, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=704f58d28567dc00";
    def.Class = "ERDefinition.ItemEvents";
    def.Name = "ItemAdded Event";
    def.Type = SPEventReceiverType.ItemAdded;
    def.SequenceNumber = 1000;
    def.Synchronization = SPEventReceiverSynchronization.Synchronous;
    def.Update();

L’exemple de code ci-dessus indique les valeurs de propriété les plus couramment utilisées. Pour obtenir la liste complète des propriétés disponibles (et consulter la documentation associée à toutes les propriétés), voir SPEventReceiverDefinition. Toutefois, la propriété la plus importante, requise dans tous les cas, est la propriété Type, en l’occurrence, ItemAdded. Vous devez également spécifier l’assembly en utilisant la propriété Assembly et la classe, en l’occurrence ERDefinition.ItemEvents, que vous avez normalement déjà créée (en suivant les instructions indiquées dans Création d’un gestionnaire d’événements).

Notez que le nom de l’assembly est fourni au travers d’un nom fort. (Vous pouvez obtenir le nom fort de l’assembly en recherchant l’assembly dans le Global Assembly Cache et en exposant les propriétés de l’assembly.) Notez également que le nom fort de l’assembly respecte la casse. Utilisez la propriété SequenceNumber pour spécifier l’ordre dans lequel les événements sont déclenchés, au cas où une action déclencherait plusieurs événements. La propriété Synchronization vous permet de spécifier si l’événement est synchrone ou asynchrone. Enfin, vous devez exécuter la méthode Update().

Texte du code

Voici le texte complet du code pour l’activité décrite ci-dessus.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.SharePoint;

namespace BindItemEvents
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost")) 
            {
                using (SPWeb web = site.OpenWeb())
                {
                    SPList list = web.Lists["Shared Documents"];

                    SPEventReceiverDefinition def = list.EventReceivers.Add();

                    def.Assembly = "ERDefinition, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=704f58d28567dc00";
                    def.Class = "ERDefinition.ItemEvents";
                    def.Name = "ItemAdded Event";
                    def.Type = SPEventReceiverType.ItemAdded;
                    def.SequenceNumber = 1000;
                    def.Synchronization = SPEventReceiverSynchronization.Synchronous;
                    def.Update();
                }
            }
        }
    }
}

Voir aussi

Tâches

Procédure : créer une fonctionnalité Gestionnaire d'événements

Concepts

Liaison d’un gestionnaire d’événements SharePoint Foundation

Liaison de gestionnaires d’événements à l’aide de Composants fonctionnels SharePoint