miércoles, 16 de noviembre de 2016

Filtrar por carpeta en una vista de un WebPart de tipo Lista/Biblioteca

Recientemente me han solicitado que en la página de inicio de un sitio web, mostrara una vista de una carpeta concreta de una lista. Aquí lo ideal sería utilizar el WebPart por defecto de la lista, pero si jugamos con él desde la interface de SharePoint, pronto deduciremos que no es posible realizar ningún filtro para una carpeta en concreto (y este es el tipo de cosas que me encantaría que Microsoft mejorara en SharePoint, pero parece más centrada en evolucionar la arquitectura base y la integración con la nube).

Así pues, ¿Existe alguna forma de filtrar por carpeta en un WebPart de tipo Lista/Biblioteca?

Una vez más, SharePoint Designer acude a nuestro rescate (si eres, como yo, de los que quiere evitar código tanto como se pueda).

Para ello tendremos que crear una vista específica en la lista que queremos mostrar, típicamente con el nombre de la carpeta a filtrar. Esto lo podemos hacer directamente por la interface normal de SharePoint.

Una vez tengamos la filtra creada (campos a mostrar, filtros adicionales, número de elementos...), abriremos nuestro SharePoint Designer e iremos al sitio donde reside dicha lista. Entonces iremos a "Listas y Librerías", y seleccionaremos aquella en la que estamos trabajando.

Una vez dentro, en la sección de "Vistas", seleccionaremos la que acabamos de crear y, con el botón derecho, la editaremos en modo avanzado.



Ya dentro del código de la vista, buscaremos una línea que empieza por un string similar a:

<View Name="{8B3F6F46-F283-4B78-BB42-558FE0899479}"

y dentro de esa línea, buscaremos el tag <Query>.

Tras la especificación del orden de los elementos (por el tag <OrderBy>), deberíamos encontrar la sección de filtro (<Where>), que es la que nos interesa modificar. Sin eliminar todo cuanto ya exista entre el <Where> y su cierre </Where> deberíamos añadir el filtro "FileDirRef" (<FieldRef Name="FileDirRef"/>), con el valor de nuestra URL a partir de la base de nuestro site collection ("/Sitio/Librería/Carpeta")

El filtro debería quedaros tal y como se muestra en las siguientes líneas (añadiendo los filtros adicionales que podáis tener en vuestra vista):

<Where><Contains><FieldRef Name="FileDirRef"/><Value Type="Computed">/Sitio/Librería/Carpeta</Value></Contains></Where>

Si guardamos los cambios realizados en esta vista, podremos comprobar en SharePoint que la vista filtra adecuadamente en la carpeta especificada.

Ya solo quedará crear el webpart de esta Lista/Biblioteca, y en las opciones de configuración, hacer que apunte a la vista que hemos creado a tal efecto.

Y el resultado: Solo mostrará los documentos contenidos en la carpeta que le hemos configurado en SharePoint Designer.

¡¡Seguimos sorteando los obstáculos que Microsoft se empeña en dejarnos en SharePoint!!