miércoles, 12 de mayo de 2010

Mini truco: RunWithElevatedPrivileges en ItemAdded

En algunos casos, necesitamos que en el evento ItemAdded se actualicen algunos campos de la lista, pero el usuario que da de alta el ítem no tiene los permisos necesarios para poder actualizarlos. En este caso, si utilizamos el evento ItemAdded, va a lanzar una excepción del tipo “Access Denied”.

Para salvar esta excepción, podemos utilizar el evento SPSecurity.RunWithElevatedPrivileges. Aquí les dejo un ejemplo, en donde luego de dar de alta un ítem de lista necesitaba determinar el valor de un campo del tipo imagen:

public override void ItemAdded(SPItemEventProperties properties){

Guid listID;

int itemID;

listID = properties.ListId;

itemID = properties.ListItem.ID;

SPSecurity.RunWithElevatedPrivileges(delegate() {

        SPSite Site = new SPSite(properties.WebUrl);

        using (SPWeb currentWeb = Site.OpenWeb()){

                SPList list = currentWeb.Lists[listID];

                SPListItem addedItem = list.GetItemById(itemID);

                addedItem["ID_Idea"] = itemID;

                addedItem["Imagen_CicloVida"] = "/pi/Arte/PI_WF_Discovery.PNG";

                addedItem.SystemUpdate();

         }

});

}

Espero les sirva y nos vemos en otra entrada.

0 comentarios:

Publicar un comentario