A raíz de una consulta en los foros de SharePoint en torno a como generar avisos ante cambios en valores de los KPIs en una lista de estado y mi sugerencia de darle una oportunidad a los manejadores de eventos, me decidí a hacer una pequeña prueba al respecto ya que las listas de tipo KPIs son un tanto especiales y no las tenía todas conmigo en relación a mi idea…por suerte ya os adelanto que el resultado de la prueba ha sido el esperado, por lo que manos a la obra:
-
Lo primero es crear una lista de tipo Status List en nuestro sitio de SharePoint 2010 de trabajo.
-
Creamos un indicador en la lista sencillo, es decir, de tipo Fixed Value.
-
En la correspondiente ventana modal añadimos el valor para el mismo.
-
Si cambiamos de la vista por defecto a la vista de todos los elementos, podremos ver los nombres de las columnas que necesitaremos para poder jugar con las posibilidades que nos da un manejador de eventos asociado a la lista. En concreto, nos fijaremos en la columna “Indicator Value”.
-
Nos vamos a Visual Studio 11 Beta (VS 11 Beta) y creamos un proyecto de tipo SharePoint 2010 Project. Añadimos al proyecto un elemento de tipo “Event Receiver”.
-
En el asistente de configuración especificamos que sea un manejador de tipo List Item Events y escogemos el evento “An item was updated”.
-
Codificamos el manejador para poder trabajar con la columna “Indicator Value”. Aquí solo tenemos que tener en cuenta que el valor almacenado es de tipo “double”.
1: public override void ItemUpdated(SPItemEventProperties properties)
2: {
3: base.ItemUpdated(properties);
4: SPListItem spiKPIListItem = properties.ListItem;
5:
6: if ((Double)spiKPIListItem["Indicator Value"] > 800000)
7: {
8: //Do something here
9: }
10: }
-
Compilamos y pulsamos F5 para poder depurar el manejador y ver que funciona sin problemas. Para ello, actualizamos el valor del KPI.
-
Tras guardar el valor actualizado, veremos que efectivamente se lanza el manejador lo que nos permite hacer acciones extra como por ejemplo enviar un correo electrónico indicando que dicho valor ha cambiado.
Referencias: