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 }
No Responses