Event handler con parametri in sharePoint 2007
L'esempio mostra come utilizzare gli event handler di una lista o document library in SharePoint 2007 (WSS3 - MOSS).
In questo esempio semplicemente aggiungo ad ogni modifica del testo il dato impostato nell'event handler (proprietà Data dell'oggetto SPEventReceiverDefinition vedi dopo).
per aggiungere l'evento ad una lista creare un progetto di tipo cosole ed eseguire il seguente codice
In questo esempio semplicemente aggiungo ad ogni modifica del testo il dato impostato nell'event handler (proprietà Data dell'oggetto SPEventReceiverDefinition vedi dopo).
C#
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
namespace WebPartTest
{
public class EventTest : SPItemEventReceiver
{
public override void ItemUpdating(SPItemEventProperties properties)
{
try
{
this.DisableEventFiring();
//get event data
string msgData = properties.ReceiverData;
SPItemEventDataCollection data = properties.AfterProperties;
//change field with event data info
data["Title"] = string.Format("{0} ({1})", data["Title"] as string, msgData);
properties.Cancel = false;
}
catch (Exception ex)
{
properties.ErrorMessage = "Error in event";
properties.Cancel = true;
}
finally
{
this.EnableEventFiring();
}
}
}
}
C#
SPWeb web = ... inserire il codice per ottenere un oggetto SPWeb ...
SPList list = web.Lists["Test"];
//modificare in base al proprio assembly
String sAssembly = "SgartEventTestDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=92225598c815612d";
String sClass = "Sgart.EventTest";
//remove all event
while (list.EventReceivers.Count > 0)
list.EventReceivers[0].Delete();
//add new event
SPEventReceiverDefinition evt = list.EventReceivers.Add();
evt.Assembly = sAssembly;
evt.Class = sClass;
evt.Type = SPEventReceiverType.ItemUpdating;
evt.SequenceNumber = 1000;
evt.Name = "SgartEventTest";
evt.Data = "sgart"; //imposto o dati da passare all'event handler
evt.Update();