SharePoint: función \ receptor de eventos

En este capítulo, aprenderemos a agregar code handle. Los controladores de código son eventos que se generan cuando se activa o desactiva una función. En otras palabras, examinaremosFeature Receivers.

El proyecto de Visual Studio que creamos en el último capítulo tenía una característica y cuando se activó, aprovisionó nuestra lista de contactos, nuestra página del sitio y el enlace a la página del sitio.

Sin embargo, cuando la función está desactivada, SharePoint solo elimina el vínculo, la página del sitio y la lista de contactos aún permanecen.

Podemos escribir el código cuando la Característica esté desactivada para eliminar la lista y la página, si queremos. En este capítulo, aprenderemos cómo eliminar contenido y elementos, cuando una función está desactivada.

Para manejar los eventos de una función, necesitamos un Feature Receiver.

Step 1 - Para obtener el receptor de funciones, haga clic con el botón derecho en la función en el Explorador de soluciones y luego elija 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) // {
         //
      }
   }
}

Puedes ver lo que obtenemos es una clase que hereda de SPFeatureReceiver.

En SharePoint, existen diferentes clases para diferentes tipos de eventos que puede manejar. Por ejemplo, eventos en listas, eventos en elementos de lista, eventos en sitios. Puede crear una clase que se derive de un receptor de eventos específico y luego puede anular métodos dentro de esa clase para manejar los eventos.

Los eventos de una función se utilizan cuando se está:

  • Activated
  • Deactivated
  • Installed
  • Uninstalled
  • Upgrading

A continuación, debe adjuntar esa clase como controlador de eventos para el elemento específico. Por ejemplo, si hay un controlador de eventos que maneja eventos de lista, necesita adjuntar esa clase a la lista.

Por lo tanto, manejaremos dos características:

  • Cuando la función está activada y

  • Cuando está siendo desactivado.

Step 2 - Implementaremos el FeatureActivated y FeatureDeactivated métodos como se muestra a continuación -

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 -

  • Cuando la función esté activada, crearemos una lista de Anuncios.

  • Cuando la función esté desactivada, comprobaremos si la lista de Anuncios está vacía y si lo está, la eliminaremos.

Step 3- Ahora haga clic derecho en el Proyecto y elija implementar. Verá la siguiente advertencia de conflicto de implementación.

Visual Studio nos dice que estamos tratando de crear una lista llamada contactos, pero ya existe una lista en el sitio llamada Contactos. Nos pregunta si queremos sobrescribir la lista existente, y en este caso haga clic enResolve.

Step 4 - Vuelva a SharePoint y luego actualice su sitio y vaya a Site Actions → Site settings → Manage site features → Sample feature.

Puede ver que no hay una lista de anuncios en el panel izquierdo.

Step 5 - Permítanos activar la función de muestra y verá la lista de Anuncios, pero está vacía en este momento.

Note - Si desactiva su función de muestra, notará que la lista de anuncios desaparece.

Step 6- Reactivemos la función. Vaya a Anuncios y luego Agregar un nuevo anuncio. Llamaremos a esta prueba y luego haremos clic en Guardar.

Verá el archivo de prueba en Anuncios.

Ahora, cuando desactive los anuncios, verá que la lista de anuncios permanece porque no estaba vacía.