lunes, 16 de junio de 2008

Error usando BeforeProperties en un EventHandler ItemUpdating

Si estáis haciendo un event handler de tipo itemUpdating (es decir, que se ejecuta durante la actualización de los elementos de una lista) os encontraréis con que podéis usar la propiedad AfterProperties para obtener los nuevos valores del ítem, pero no BeforeProperties para obtener los nuevos valores.

La solución es acceder directamente al ListItem para obtener los valores que tenía el ítem antes de la actualización.

Por ejemplo, esto se podría necesitar si se quiere poner valor3 en el campo2, cuando el valor de campo1 pase de valor1 a valor2 (yo he necesitado algo similar en un cliente).
En este caso habría que hacer algo parecido a esto:

public override void ItemUpdating(SPItemEventProperties properties)
{

if (properties.AfterProperties["campo1"]=="valor1" && properties.ListItem["campo1"]=="valor2")
{
//Hacer las operaciones correspondientes
properties.AfterProperties["campo2"] = "valor3";
}
}

No hay comentarios: