Procedimiento para crear una característica de controlador de eventos
En este ejemplo, se muestra cómo agregar un controlador de eventos simple que impide que los elementos se eliminen de una lista. En esta tarea, se usan dos procedimientos:
Creación de un controlador de eventos en Microsoft Visual Studio
Adición del controlador de eventos como una característica en Windows SharePoint Services
Para crear el controlador de eventos en Visual Studio
Cree un proyecto nuevo en Visual Studio haciendo clic en Archivo; a continuación, puntee en Nuevo y haga clic en Proyecto.
En el cuadro de diálogo Nuevo proyecto, seleccione Visual C# del cuadro Tipos de proyecto, seleccione Biblioteca de clases en el cuadro Plantillas, escriba DeletingEventHandler en el cuadro Nombre y, a continuación, haga clic en Aceptar.
En el Explorador de soluciones, seleccione DeletingEventHandler y haga clic en Agregar referencia en el menú Proyecto.
En el cuadro de diálogo Agregar referencia, seleccione Microsoft.SharePoint en la ficha .NET y, a continuación, haga clic en Aceptar.
En el Editor de código, importe el espacio de nombres de Microsoft.SharePoint de la siguiente manera.
using Microsoft.SharePoint;
Cambie el nombre de la clase a DeletingAction y haga que herede de la clase SPItemEventReceiver de la siguiente manera.
public class DeletingAction : SPItemEventReceiver
Agregue el siguiente código dentro de la clase para invalidar el método ItemDeleting.
public override void ItemDeleting(SPItemEventProperties properties) { properties.Cancel = true; properties.ErrorMessage = "Deleting items from " + properties.RelativeWebUrl + " is not supported."; }
En el Explorador de soluciones, haga clic con el botón secundario en el nodo DeletingEventHandler y, a continuación, haga clic en Propiedades.
En el cuadro de diálogo Propiedades, haga clic en la ficha Firma, seleccione Firmar el ensamblado, elija Seleccione un archivo de clave de nombre seguro y, a continuación, haga clic en <Nuevo…>.
En el cuadro de diálogo Crear clave de nombre seguro, escriba DeletingEventHandler.snk en el cuadro Nombre de archivo de claves; opcionalmente, especifique una contraseña para la clave y, a continuación, haga clic en Aceptar.
Para generar el proyecto, haga clic en Generar solución en el menú Generar o presione la tecla CTRL+MAYÚS+B.
Busque la carpeta
\DeletingEventHandler\bin\Debug
en la carpeta Proyectos de Visual Studio y arrastre el archivo DeletingEventHandler.dll aLocal_Drive:\WINDOWS\assembly
para colocar el archivo DLL en la memoria caché de ensamblados global.
Para agregar el controlador de eventos como una característica de Windows SharePoint Services
Cree una carpeta en unidad_local
:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/FEATURES
llamada DeletingEventHandler .Cree un archivo Archivos Feature.xml en esta carpeta como el que aparece a continuación, que identifica la característica y su archivo de manifiesto de elemento y establece el ámbito de la característica para el Web site.
<Feature Scope="Web" Title="Deleting Event Handler" Id="GUID" xmlns="https://schemas.microsoft.com/sharepoint/"> <ElementManifests> <ElementManifest Location="Elements.xml"/> </ElementManifests> </Feature>
Para reemplazar el marcador de posición del GUID en el atributo Id anterior, genere un GUID mediante la ejecución de Guidgen.exe que se encuentra en unidad_local
:\Program Files\Microsoft Visual Studio 8
.Cree un archivo Elements.xml en la carpeta DeletingEventHandler que identifica el ensamblado, la clase y el método que deben implementarse como controlador de eventos. En este ejemplo se aplica el controlador de eventos a todas las listas de anuncios de un sitio, como se especifica en el atributo ListTemplateId. Para los identificadores de otros tipos de plantilla de lista Windows SharePoint Services predeterminados, consulte la descripción del atributo Type del elemento ListTemplate .
<Elements xmlns="https://schemas.microsoft.com/sharepoint/"> <Receivers ListTemplateId="104"> <Receiver> <Name>DeletingEventHandler</Name> <Type>ItemDeleting</Type> <SequenceNumber>10000</SequenceNumber> <Assembly>DeletingEventHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a26b5449ac4a4cf3</Assembly> <Class>DeletingEventHandler.DeletingAction</Class> <Data></Data> <Filter></Filter> </Receiver> </Receivers> </Elements>
Para obtener el token del ensamblado de clave pública, en el Explorador de Windows busque el archivo DeletingEventHandler.dll en unidad_local
:\WINDOWS\assembly
. Haga clic con el botón secundario en el archivo, haga clic en Propiedades y, en la ficha General del cuadro de diálogo Propiedades, seleccione y copie el token.En el símbolo del sistema, vaya a
\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN
en la unidad local y escriba cada uno de los siguientes comandos para instalar la característica en la implementación, activar la característica en un subsitio especificado y restablecer Servicios de Microsoft Internet Information Server (IIS) de modo que los cambios surtan efecto:stsadm -o installfeature -filename DeletingEventHandler\Feature.xml stsadm -o activatefeature -filename DeletingEventHandler\Feature.xml -url https://Server/Site/Subsite iisreset
Intente eliminar un elemento de una lista de anuncios en el sitio web especificado para ver los efectos del controlador de eventos de características.