none
Buscar en Biblioteca de documentos RRS feed

  • Pregunta

  • Aclarar antes que nada que trabajo con Sharepoint 2010. Llevo días liado buscando información y probando sin conseguir resultados apenas. Necesito conseguir el ID de un determinado documento de la librería haciendo una consulta en la que comparo que el nombre contenga un string que yo le paso. El código sería algo así:

     

              string Con = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>" + NombreDocumento + "</Value></Contains></Where>";
              SPQuery Quer = new SPQuery();
              Quer.Query = Con;
              SPListItem itmDoc = ConsultaDocumento(string.Empty, LISTA_DOCUMENTOS, Quer);
              if (itmDoc != null)
              {
                IdDocumento = int.Parse(itmDoc[FIELD_ID].ToString());
                btnEliminarDoc.Visible = true;
              }
    

        private SPListItem ConsultaDocumento(string ListFullyqualifiedName, string Lista, SPQuery Consulta)
        {
          SPListItem itemDocumento = null;
          try
          {
            SPWeb webInUserContext = SPContext.Current.Web;
            SPSite SiteInUserContext = SPContext.Current.Site;
            Guid webGuid = webInUserContext.ID;
            Guid siteGuid = SiteInUserContext.ID;
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
              using (var mySite = new SPSite(siteGuid))
              {
                using (var myWeb = string.IsNullOrEmpty(SubSite) ? mySite.OpenWeb(webGuid) : mySite.OpenWeb(SubSite))
                {
                  SPList lst = null;
                  lst = !string.IsNullOrEmpty(ListFullyqualifiedName) ? myWeb.GetListFromUrl(ListFullyqualifiedName) : myWeb.Lists[Lista];
                  SPListItemCollection MiColeccion = lst.GetItems(Consulta);
                  if (MiColeccion.Count > 0)
                    itemDocumento = MiColeccion[0];
                  else
                    itemDocumento = null;
                }
              }
            });
          }
          catch (Exception ex)
          {
            ErrorSettings(ex);
          }
          return itemDocumento;
        }
    

    En la primera parte llamo a la función que pongo en el segundo bloque. No salta error, simplemente no devuelve ningún valor. He comprobado que entro en la lista correcta y tambien que el documento que busco exista.

     

    ¿Alguna solución? Gracias por su tiempo

     

    jueves, 24 de marzo de 2011 1:05

Respuestas

  • Hola VWeb,

    Para facilitar la creación de consultas CAML y ver que se están devolviendo resultados, te recomiendo que te bajes el CAML Builder que es gratuito. De la consulta que planteas, quizás estés teniendo problemas con las mayúsculas/minúsculas por lo que no te vendría mal un formateo previo.

    Un saludo!

    jueves, 24 de marzo de 2011 9:10