Creación de un controlador de eventos básico

El siguiente ejemplo muestra los pasos básicos para crear un controlador de eventos que ejecuta código antes de que se elimine un elemento de una lista o después de que se agregue el elemento. El ejemplo trabaja con listas de anuncios, agregando texto al cuerpo de los nuevos elementos y cancelando cualquier intento de eliminar los elementos existentes.

Para crear un ensamblado del controlador de eventos en Microsoft Visual Studio 2005, se crea una biblioteca de clases. Se agrega la referencia a Microsoft.SharePoint.dll y se hereda de la clase base Microsoft.SharePoint.SPItemEventReceiver, como se muestra en el ejemplo siguiente.

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;

namespace MyEventHandlers

{
    public class SimpleEventHandler : SPItemEventReceiver    {
    }
}

Windows SharePoint Services 3.0 crea una instancia de un objeto de su clase cuando se producen acciones en la lista. Como programador, puede reemplazar los métodos de la clase base de SharePoint para los eventos que desee controlar. Los métodos de la clase SPItemEventReceiverque se pueden reemplazar son los siguientes:

  • ContextEvent

  • ItemAdded

  • ItemAdding

  • ItemAttachmentAdded

  • ItemAttachmentAdding

  • ItemAttachmentDeleted

  • ItemAttachmentDeleting

  • ItemCheckedIn

  • ItemCheckedOut

  • ItemCheckingIn

  • ItemCheckingOut

  • ItemDeleted

  • ItemDeleting

  • ItemFileConverted

  • ItemFileMoved

  • ItemFileMoving

  • ItemUncheckedOut

  • ItemUncheckingOut

  • ItemUpdated

  • ItemUpdating

En este ejemplo se van a reemplazar dos métodos: ItemDeleting y ItemAdded. Recuerde que el sufijo "ing" indica que se está controlando el archivo de forma sincrónica antes de que la acción se produzca realmente, y que el sufijo "ed" indica que se está controlando el evento de forma asincrónica después de que la acción se produzca.

public override void ItemDeleting(SPItemEventProperties properties)
{
    properties.Cancel = true;
    properties.ErrorMessage = "Deleting is not supported.";
}

Se tiene acceso a los datos asociados con el objeto SPListItem a través de un objeto que se proporciona como un parámetro de entrada cuando se llama a su método. Este objeto es del tipo SPItemEventProperties. Mediante la propiedad Cancel del SPItemEventProperties se puede cancelar el evento, y mediante la propiedad ErrorMessage se puede mostrar un mensaje de error personalizado en una página de SharePoint.

El segundo método para reemplazar es ItemAdded. En el ejemplo siguiente se utiliza la propiedad ListItem para devolver un objeto que representa el nuevo elemento de lista y, a continuación, se modifica el texto del cuerpo del elemento.

public override void ItemAdded(SPItemEventProperties properties)
{
    SPListItem oItem = properties.ListItem;
    oItem["Body"] = "Body text maintained by the system.";
    oItem.Update();
}

Debe registrar los receptores de eventos ItemDeleting y ItemAdded tal y como se describe en Registro de un controlador de eventos.

Vea también

Otros recursos

Registro de un controlador de eventos
Registros de eventos
Procedimiento para crear una característica de controlador de eventos
Introducción a la personalización mediante programación de un sitio web de SharePoint en Visual Studio
Validación de seguridad y realización de envíos para actualizar datos
Concesión de privilegio
Trabajo con características