SharePoint - Récepteur de fonctionnalités \ d'événements

Dans ce chapitre, nous allons apprendre à ajouter code handle. Les poignées de code sont des événements qui sont déclenchés lorsqu'une fonction est activée ou désactivée. En d'autres termes, nous examineronsFeature Receivers.

Le projet Visual Studio que nous avons créé dans le dernier chapitre avait une fonctionnalité et lorsqu'il a été activé, il a provisionné notre liste de contacts, notre SitePage et le lien vers SitePage.

Cependant, lorsque la fonctionnalité est désactivée, SharePoint supprime uniquement le lien, la page de site et la liste de contacts restent.

Nous pouvons écrire le code lorsque la fonctionnalité est désactivée pour supprimer la liste et la page, si nous le voulons. Dans ce chapitre, nous allons apprendre comment supprimer du contenu et des éléments, lorsqu'une fonctionnalité est désactivée.

Pour gérer les événements d'une fonctionnalité, nous avons besoin d'un Feature Receiver.

Step 1 - Pour obtenir le récepteur de fonctionnalités, cliquez avec le bouton droit sur la fonctionnalité dans l'explorateur de solutions, puis choisissez Add Event Receiver.

using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;

namespace FeaturesAndElements.Features.Sample {
   /// <summary>
      /// This class handles events raised during feature activation, deactivation,
         installation, uninstallation, and upgrade.
   /// </summary>
   /// <remarks>
      /// The GUID attached to this class may be used during packaging and should not be modified.
   /// </remarks>
   [Guid("e873932c-d514-46f9-9d17-320bd3fbcb86")]
  
   public class SampleEventReceiver : SPFeatureReceiver {
      // Uncomment the method below to handle the event raised after a feature has been activated.
      //public override void FeatureActivated(SPFeatureReceiverProperties properties)//{
         //
      }
      // Uncomment the method below to handle the event raised before a feature is deactivated.
      //public override void FeatureDeactivating(SPFeatureReceiverProperties properties)// {
         //
      }
      // Uncomment the method below to handle the event raised after a feature has been installed.
      //public override void FeatureInstalled(SPFeatureReceiverProperties properties)// {
         //
      }
      // Uncomment the method below to handle the event raised before a feature is uninstalled.
      //public override void FeatureUninstalling(SPFeatureReceiverProperties properties)// {
         //
      }
      // Uncomment the method below to handle the event raised when a feature is upgrading.
      //public override void FeatureUpgrading(SPFeatureReceiverProperties
         properties, string upgradeActionName,
         System.Collections.Generic.IDictionary<string, string> parameters) // {
         //
      }
   }
}

Vous pouvez voir que nous obtenons une classe qui hérite de SPFeatureReceiver.

Dans SharePoint, il existe différentes classes pour différents types d'événements que vous pouvez gérer. Par exemple, des événements sur des listes, des événements sur des éléments de liste, des événements sur des sites. Vous pouvez créer une classe dérivée d'un récepteur d'événements spécifique, puis remplacer les méthodes à l'intérieur de cette classe pour gérer les événements.

Les événements d'une fonction sont utilisés lorsqu'elle est -

  • Activated
  • Deactivated
  • Installed
  • Uninstalled
  • Upgrading

Ensuite, vous devez attacher cette classe en tant que gestionnaire d'événements pour l'élément spécifique. Par exemple, s'il existe un gestionnaire d'événements qui gère les événements de liste, vous devez attacher cette classe à la liste.

Par conséquent, nous allons gérer deux fonctionnalités -

  • Lorsque la fonction est activée et

  • Lorsqu'il est désactivé.

Step 2 - Nous mettrons en œuvre le FeatureActivated et méthodes FeatureDeactivated comme indiqué ci-dessous -

using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;

namespace FeaturesAndElements.Features.Sample {
   /// <summary>
      /// This class handles events raised during feature activation, deactivation,
         installation, uninstallation, and upgrade.
   /// </summary>
   /// <remarks>
      /// The GUID attached to this class may be used during packaging and should
         not be modified.
   /// </remarks>

   [Guid("e873932c-d514-46f9-9d17-320bd3fbcb86")]
   public class SampleEventReceiver : SPFeatureReceiver {
      private const string listName = "Announcements";
      
      public override void FeatureActivated(SPFeatureReceiverProperties properties) {
         var web = properties.Feature.Parent as SPWeb;
         
         if (web == null) return;
         var list = web.Lists.TryGetList(listName);
         
         if (list != null) return;
         var listId = web.Lists.Add(listName, string.Empty,
         SPListTemplateType.Announcements);
         list = web.Lists[listId];
         list.OnQuickLaunch = true;
         list.Update();
      }
      public override void FeatureDeactivating(SPFeatureReceiverProperties properties) {
         var web = properties.Feature.Parent as SPWeb;
         
         if (web == null) return;
         var list = web.Lists.TryGetList(listName);
         
         if (list == null) return;
         if (list.ItemCount == 0) {
            list.Delete();
         }
      }
   }
}

Note -

  • Lorsque la fonctionnalité est activée, nous créerons une liste d'annonces.

  • Lorsque la fonctionnalité est désactivée, nous vérifierons si la liste des annonces est vide et si c'est le cas, nous la supprimerons.

Step 3- Cliquez maintenant avec le bouton droit sur le projet et choisissez déployer. Vous verrez l'avertissement de conflit de déploiement suivant.

Visual Studio nous dit que nous essayons de créer une liste appelée contacts, mais il existe déjà une liste sur le site appelée Contacts. Il nous demande si nous voulons écraser la liste existante, et dans ce cas cliquez surResolve.

Step 4 - Revenez à SharePoint, puis actualisez votre site et accédez à Site Actions → Site settings → Manage site features → Sample feature.

Vous pouvez voir qu'il n'y a pas de liste d'annonces dans le volet gauche.

Step 5 - Laissez-nous activer la fonction Sample et vous verrez la liste des annonces, mais elle est vide pour le moment.

Note - Si vous désactivez votre fonction d'échantillonnage, vous remarquerez que la liste des annonces disparaît.

Step 6- Réactivons la fonctionnalité. Accédez à Annonces, puis Ajouter une nouvelle annonce. Nous appellerons ce test puis cliquerons sur Enregistrer.

Vous verrez le fichier de test sous Annonces.

Maintenant, lorsque vous désactivez les annonces, vous verrez que la liste des annonces reste car elle n'était pas vide.