SharePoint 2010: Cómo leer todos los metadatos de una lista con el modelo de objetos en cliente!

Si necesitáis leer todos los metadatos de los elementos de una lista o biblioteca con el modelo de objetos en cliente, SharePoint nos lo pone relativamente fácil a través de clases equivalentes a las que tenemos en el lado del servidor. En este caso, el código necesario sería:

   1: using (MO_NET.ClientContext context = new MO_NET.ClientContext("http://<MiSitioSP>"))

   2: {

   3:     context.AuthenticationMode = 

   4:         MO_NET.ClientAuthenticationMode.Default;

   5:     context.Credentials = 

   6:         new NetworkCredential("Usuario", "Contraseña", "Dominio");

   7:     //context.FormsAuthenticationLoginInfo = new MO_NET.FormsAuthenticationLoginInfo(loginName, password);

   8:  

   9:     //Definición de operaciones

  10:     MO_NET.List oList = context.Web.Lists.GetByTitle("Infraestructura");

  11:     MO_NET.CamlQuery camlQuery = new MO_NET.CamlQuery();

  12:     camlQuery.ViewXml = "<View><RowLimit>100</RowLimit></View>";

  13:     MO_NET.ListItemCollection collListItem = oList.GetItems(camlQuery);

  14:     MO_NET.ClientObjectPrototype allFields = oList.Fields.RetrieveItems();

  15:  

  16:     //Especificar operaciones

  17:     allFields.Retrieve();

  18:     context.Load(collListItem);

  19:  

  20:     //Ejecutar operaciones

  21:     context.ExecuteQuery();

  22:  

  23:     foreach (MO_NET.ListItem oListItem in collListItem)

  24:     {

  25:         foreach (MO_NET.Field field in oList.Fields)

  26:         {

  27:             try

  28:             {

  29:                 Console.WriteLine(field.InternalName + "" +

  30:                     oListItem[field.InternalName]);

  31:             }

  32:             catch (Exception ex)

  33:             {                            

  34:                 //throw;

  35:                 continue;

  36:             }

  37:         }

  38:     }

  39: }

Fijaros que el código no tiene nada del otro mundo:

  • Creamos un contexto de cliente.
  • Definimos las operaciones a realizar. En este caso, lo más interesante es como accedemos a la colección de campos de una lista a través del método RetrieveItems(). Fijaros que este caso inicializamos la correspondiente colección mediante el método Retrieve.
  • A partir de aquí, hacemos un ExecuteQuery() y a iterar. Como habrá ciertos campos no inicializados, en el bucle interno he puesto un Try / Catch un poco guarro (por el Continue) para que por cada elemento siga iterando a pesar de encontrarse alguna columna no inicializada.

La salida por pantalla correspondiente es la siguiente:

image

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *