Tutti coloro che usano Sharepoint come utenti o sviluppatori sanno che in WSS 3.0 (o v12 fate voi) esiste il cestino. Se cancellate un elemento di una lista (o la lista stessa) lo potete recuperare aprendo il cestino (recycle bin). Molti sviluppatori spesso non si rendono conto che invocando il metodo .Delete dell'oggetto SPListItem l'elemento cancellato non va proprio nel cestino ma viene eleminato in maniera irreversibile. Abilmente celato nella documentazione dell'SDK c'è un metodo dal nome equivoco, .Recycle che restituisce un GUID. Bene, questo metodo elimina l'elemento dalla lista e lo inserisce nel cestino. In caso di successo restituisce il GUID dell'elemento "cestinato". Vediamo in dettaglio cosa fa usando il fido Reflector.
La prima cosa è andare a vedere che fa il metodo .Delete
come potete veder sia .Delete che .Recycle invocano un metodo private .DeleteCore a cui passano un parametro contenente il tipo di cancellazione desiderato.
Cosa abbiamo imparato da questo rapido giro nell'OM di Sharepoint? Se nei nostri programmi vogliamo avere la possibilità di recuperare i dati cancellati occorre usare .Recycle in luogo di .Delete.
Sviluppatore avvisato mezzo salvato.