Principales respuestas
CAML Query. Buscar archivos dentro de carpetas de una biblioteca de documentos

Pregunta
-
Hola
Necesito buscar un documento que se encuentra dentro de una carpeta en una biblioteca de documentos
Si utilizo esta query puedo buscar dentro de una biblioteca:
<Query><Where><Eq><FieldRef Name="FileLeafRef" /><Value Type="File">imgPrueba.jpg</Value></Eq></Where></Query>
pero que consulta debería utilizar si el documento que quiero buscar esta dentro de una carpeta? Necesito ubicar este documento y cambiarle el nombre.
Por otro lado cuando el documento no esta dentro de una carpeta la consulta funciona en U2U CAML Query Builder, me trae un registro, pero no trae nada si utilizo la consulta en C# a través del siguiente código:
SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite subSite = new SPSite(SPContext.Current.Site.ID)) { using (SPWeb subWeb = site.OpenWeb(SPContext.Current.Web.ID)) { SPList list = subWeb.Lists["ImagenesActa"]; subWeb.AllowUnsafeUpdates = true; SPQuery subquery = new SPQuery(); string strQuery = "<Where><Eq><FieldRef Name='FileLeafRef' /><Value Type='File'>" + hfNombreImagen.Value + "</Value></Eq></Where>"; query.Query = strQuery; SPListItemCollection subSPlistItems = list.GetItems(query); SPListItem subitem; if (subSPlistItems.Count > 0) subitem = subSPlistItems[0]; subitem["FileLeafRef"] = "ImagenActa_" + txtNumeroActaCargar.Text + ".jpg"; subitem.Update(); } } });
Este código funciona correctamente si busco un registro en una lista, pero quizás sea diferente para una biblioteca de documentos y por eso no me devuelve nada.
Espero me puedan ayudar. Desde ya muchas gracias, Saludos
Respuestas
-
Hola,
En este thread tienes varios ejemplos para trabajar con carpetas mediante CAML: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/35e799a1-9360-46e5-8719-dd35fdace7ea
------------------------------------------------------------
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
------------------------------------------------------------- Marcado como respuesta Santiago Porras RodríguezMVP, Moderator miércoles, 20 de febrero de 2013 12:25
Todas las respuestas
-
Hola,
En este thread tienes varios ejemplos para trabajar con carpetas mediante CAML: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/35e799a1-9360-46e5-8719-dd35fdace7ea
------------------------------------------------------------
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
------------------------------------------------------------- Marcado como respuesta Santiago Porras RodríguezMVP, Moderator miércoles, 20 de febrero de 2013 12:25
-
Buen dia:
El siguiente ejemplo podria servirte de orientacion:
SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite subSite = new SPSite(SPContext.Current.Site.ID)) { using (SPWeb subWeb = site.OpenWeb(SPContext.Current.Web.ID)) { SPList list = subWeb.Lists["ImagenesActa"]; subWeb.AllowUnsafeUpdates = true; SPQuery subquery = new SPQuery(); string strQuery = "<Where><Eq><FieldRef Name='FileLeafRef' /><Value Type='File'>" + hfNombreImagen.Value + "</Value></Eq></Where>";
Query .FolderServerRelativeUrl = "/lists/cleantasks/folder";
query.Query = strQuery;
SPListItemCollection subSPlistItems = list.GetItems(query);
SPListItem subitem; if (subSPlistItems.Count > 0) subitem = subSPlistItems[0]; subitem["FileLeafRef"] = "ImagenActa_" + txtNumeroActaCargar.Text + ".jpg"; subitem.Update(); } } });