SharePoint 2010: Trabajo programático con listas de tipo encuesta (I)!

Una de las listas que se crea por defecto en un sitio de tipo “Sitio de grupo” de SharePoint 2010 es la de tipo encuesta que permite modelar de forma sencilla cuestionarios en los que se pueden definir preguntas de distintos tipos y se permite responder a la misma de forma secuencial. Como habréis deducido, este tipo de lista es un tanto especial lo que es un factor a tener en cuenta cuando queremos atacarla programáticamente (para explotar las respuestas a una encuesta por ejemplo). Sin embargo, como os demostraré el trabajo vía API con este tipo de listas es similar al que realizamos con otros tipos:

  • Creamos en nuestro sitio de trabajo una lista de tipo encuesta.
  • Añadimos un par de preguntas de tipo “Una línea de texto”.
  • Respondemos al menos una vez a la encuesta.
image image image
  • Nos vamos a Visual Studio 2010 y creamos un proyecto de tipo Aplicación de Consola. Añadimos una referencia a Microsoft.SharePoint.
  • Añadimos una directiva using a Microsoft.SharePoint.
  • Añadimos un método estático a Program.cs que nos permita recorrer las respuestas de la encuesta y mostrar la información por pantalla como sigue:
   1: using System;

   2: using System.Collections.Generic;

   3: using System.Linq;

   4: using System.Text;

   5:  

   6: //Espacios de nombres necesarios

   7: using Microsoft.SharePoint;

   8: namespace SPEncuestasProc

   9: {

  10:     class Program

  11:     {

  12:         static void Main(string[] args)

  13:         {

  14:             ProcessSurvey();

  15:             Console.ReadLine();

  16:         }

  17:  

  18:         static void ProcessSurvey()

  19:         {

  20:             using (SPSite spsSitio = new SPSite("http://demo2010a:100/sites/PortalIntranet/"))

  21:             {

  22:                 using (SPWeb spwWeb = spsSitio.OpenWeb())

  23:                 {

  24:                     SPList splSurvey = spwWeb.Lists["Encuesta"];

  25:                     SPListItemCollection splicItemCollection = splSurvey.Items;

  26:                     int iInitialCount, iFieldsNumber, iAnswerNumber=0;                    

  27:                     foreach (SPListItem splItem in splicItemCollection)

  28:                     {

  29:                         Console.WriteLine("----Respuesta # {0} ----", iAnswerNumber);

  30:                        iFieldsNumber = splItem.Fields.Count;

  31:                        for (iInitialCount  = 0; iInitialCount < iFieldsNumber; iInitialCount++)

  32:                        {

  33:                            

  34:                            if (splItem[splItem.Fields[iInitialCount].InternalName]!=null)

  35:                            {

  36:                                Console.WriteLine(

  37:                                     splItem.Fields[iInitialCount].InternalName + " - " +

  38:                                     splItem[splItem.Fields[iInitialCount].InternalName]);    

  39:                            }                        

  40:                        }

  41:                        iAnswerNumber++;

  42:                     }

  43:                 }

  44:             }

  45:         }        

  46:     }

  47: }

  • Cómo veis, lo más interesante del método es la forma en la que se recorren todos los campos disponibles para un registro de la encuesta lo que nos permite acceder a las preguntas y a su respuesta. Esto lo conseguimos accediendo a la colección Fields disponible en cada objeto de tipo SPListItem de la lista.
  • Para cada campo, mostramos su nombre interno y su valor. La salida correspondiente por pantalla es la que se muestra a continuación:

image

Y hasta aquí llega este post sobre trabajo programático con listas de tipo encuesta.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s