Oggi mi sono accorto di questa cosa. Se attacco un event handler ad una document library con il versioning e le funzionalità di check-in e check-out attive, l'evento ItemUpdating viene scatenato 2 volte !
Nelle pagine di supporto Microsoft, viene segnalato l'errore e viene data una soluzione che riguarda solamente però il caso in cui il documento venga messo in check-in o in check-out; l'help è visualizzabile a questo indirizzo: http://support.microsoft.com/kb/939307.
Mentre invece, se vogliamo eseguire delle operazioni solamente una volta, dobbiamo controllare che ci siano delle BeforeProperties valorizzate !

public override void ItemUpdating(SPItemEventProperties properties)

{
this.DisableEventFiring();
WriteLog("Start ItemUpdating");
bool go = false;

foreach (DictionaryEntry de in properties.BeforeProperties)
{
go = true;
WriteLog(String.Format("{0} - {1}", de.Key, de.Value));
}

if(go)
{
//do something only for one time ! }

this.EnableEventFiring();
}

Magari non è il massimo della bellezza.. ma funziona !


TAGS: [MOSS] [WSS 3.0] [Event Handler] [ItemUpdating]
Commenti(0) - Posted @ 10/1/2007 5:39:42 PM - Categoria: Sharepoint - Permalink - Share on twitter | facebook


COMMENTI
Non sono stati aggiungi commenti ...

INSERISCI UN COMMENTO

Nome *
Indirizzo e-mail
(non verrà pubblicato)
Commento *