none
Programa en VS - Recorrer Lista RRS feed

  • Pregunta

  • Buen día... Quisiera que me puedan ayudar con el siguiente problema:

    Tengo que hacer algun programita en visual que pueda recorrer dos listas que ya tengo creadas en un sitio de Sharepoint y en función de eso armar un string que pueda ser interpretado como texto HTML.

    Páginas o sugerencias que puedan pasarme...

    Muchas Gracias!!!

    viernes, 12 de agosto de 2011 12:38

Todas las respuestas

  • Hola,

    Para recorrer los elementos de una lista de SharePoint tienes las siguientes opciones:

    • Si tu lógica reside en el servidor, usar la API de servidor...te vale para SharePoint 2007 y SharePoint 2010.
    • Si tú lógicva reside fuera del servidor, usar o bien los Servicios Web (SharePoint 2007 y SharePoint 2010), o bien el modelo de objetos en cliente (SharePoint 2010) o la API REST (SharePoint 2010).

    En cuanto a ejemplos de como conseguir este recorrido:

    Entiendo que la generación del string de HTML ya la tienes controlada.

    Saludos


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------
    sábado, 13 de agosto de 2011 6:50
  • Muchas Gracias!!! Estoy viendo esto q me pasaste.. Pude recorrer la lista en cierta forma. Lo que me gustaria saber es de que manera se puede acceder a las columnas que le defini desde Sharepoint, porque solo me aparecen las predeterminadas.. lo que yo quiero es tomar algo así:

    Console

     

    .WriteLine(item.Title.ToString()); (es a lo que pude acceder, Title)

    Console

     

     

    .WriteLine(item.Columna1.ToString()); (es a la que quiero acceder, con el intellicense no me aparece Columna1, ninguna de las de la lista)

     

    lunes, 15 de agosto de 2011 18:26
  • Hola,

    Si estás trabajando con SharePoint 2010 utiliza LINQ To SharePoint para facilitarte realizar consultas y recorrer los resultados...en caso de que estés con SharePoint 2007 tienes que acceder a las propiedades en concreto usando: item["TuColumna"].

    Un saludo


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------
    martes, 16 de agosto de 2011 12:46
  • Muchas Gracias Juan por tu pronta respuesta, quisiera pedirte si tienes info de LINQ To Sharepoint para pasarme.. Estuve leyendo un poco en internet de lo que pude ir encontrando y quisiera algún tutorial básico con algún ejemplo para copiar e ir probando y en base a eso poder armar lo que necesito.

    Saludos

    martes, 16 de agosto de 2011 14:12
  • Hola,

    Empieza con estos:

    Saludos


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------
    martes, 16 de agosto de 2011 16:54
  • Hola!...

    si no me equivoco ya debes tener algo asi al principio de tu función:

    using (SPSite site = new SPSite(ConfigurationManager.AppSettings["UrlSitio"]))
    {
       using (SPWeb web = site.OpenWeb(ConfigurationManager.AppSettings["adminsite"]))
      {...
    


    para recorrer listas usas lo siguiente:

    foreach (SPList lista in web.Lists) {...


    y dentro de esto puedes recorrer los campos con:

    foreach (SPField field in lista.Fields) {...


    finalmente puedes intentar imprimir algunas de estas propiedades para que te guies:

    field.Type
    field.SourceId
    field.TypeDisplayName
    field.StaticName
    field.Title
    


    creo que ya esto podria darte una mano....

    por otro lado, lo mas probable es que trates de acceder al valor de los campos que has creado, para ello previamente debes hacer una consulta con CAML. por ejemplo:

    using (SPSite site = new SPSite(ConfigurationManager.AppSettings["UrlSitio"]))
    {
      using (SPWeb web = site.OpenWeb(ConfigurationManager.AppSettings["adminsite"]))
      {
        SPUser currentUser = web.CurrentUser;
    
        SPList oLista = web.Lists[ConfigurationManager.AppSettings["Calendar"]];
        <strong>SPListItemCollection itemsCalendar = oLista.GetItems(<span style="text-decoration:underline">strQuery()</span>);</strong>
    
        web.AllowUnsafeUpdates = true;
    
        GridView2.DataSource = createDataTable(itemsCalendar);
              GridView2.DataBind();
        }
    
      }
    

    en esta linea:

    SPListItemCollection itemsCalendar = oLista.GetItems(strQuery());

    Precisamente en esta seccion:

    strQuery()

    Se encuetra la consulta CAML de la que te hablo.

    te dejo esta por ejemplo:

    private SPQuery strQuery()
    {
        if (!string.IsNullOrEmpty(Request.QueryString["dateEvent"].ToString()))
        {
          StringBuilder q = new StringBuilder();
    
          q.Append("<Where>" +
                "<And>" +
                  "<Leq>" +
                    "<FieldRef Name=\"EventDate\" />" +
                    "<Value IncludeTimeValue=\"TRUE\" Type=\"DateTime\">" +
                        Request.QueryString["dateEvent"].ToString() + "T23:59:59Z" +
                      "</Value>" +
                    "</Leq>" +
                    "<Geq>" +
                      "<FieldRef Name=\"EventDate\" />" +
                      "<Value IncludeTimeValue=\"TRUE\" Type=\"DateTime\">" +
                        Request.QueryString["dateEvent"].ToString() + "T00:00:00Z" +
                      "</Value>" +
                    "</Geq>" +
                  "</And>" +
                 "</Where><OrderBy><FieldRef Name=\"EventDate\" Ascending=\"True\" /></OrderBy>");
    
    
            SPQuery query = new SPQuery();
            query.Query = q.ToString();
            return query;
          }
          else
          {
            return null;
          }
    
        }
    

    Espero te de una mano.

     

    saludos.

     

    martes, 16 de agosto de 2011 17:09
  • Muchas gracias por las respuestas que me dieron...

    Necesito hacer una query para consultar ciertos campos, lo que tengo q haces es recorrer una lista y tomar los elementos que cumplan una determinada condición para un campo.. Quisiera saber si alguien puede pasarme algo.. estuve siguiendo lo que me paso Avatar242 pero no se como hacer la query...

    Saludos!

    miércoles, 24 de agosto de 2011 14:06