Detectar si se ha publicado un ítem en una lista con Event Receiver en SharePoint

Para poder detectar si se ha publicado un ítem en una lista no existe ningún evento del tipo “ItemPublished”, pero si tenemos el evento “ItemCheckedIn” que nos avisará cada vez que se haga un CheckIn del elemento. Para saber si es una publicación o no podemos seguir estas indicaciones:
Dentro del event receiver obtenemos el número de versión del ítem antes de la actualización

properties.BeforePropeties["vti_level"]

Del mismo modo, necesitamos obtenerlo del ítem después de la actualización

properties.AfterPropeties["vti_level"]

NOTA: Debemos parsear los valores recibidos a un entero para poder trabajar mejor con ellos.
Esta propiedad tiene estos valores cuando se trata de una publicación:

properties.BeforePropeties["vti_level"] = 255
properties.AfterPropeties["vti_level"] = 1

Si se trata de un CheckIn Minor Version los dos valores serán 255. Por lo tanto, podemos aplicar la siguiente lógina en nuestro evento ItemCheckedIn:

if( (int)properties.BeforeProperties["vti_level"] == 255
&& (int)properties.AfterProperties ["vti_level"] == 1 )
{
     //Es una publicación
}

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.