miércoles, 17 de marzo de 2010

Infopath 2010: Selectores desplegables filtrados en cascada

Uno de los temas que me traían de cabeza con SharePoint 2007, era cómo conseguir en un formulario de una lista o librería un campo desplegable de opciones que filtrara el contenido en función de otro campo del mismo formulario.

Con Infopath 2007 se podían realizar este tipo de listas desplegables en cascada aplicando filtros en el campo "dropdown" correspondiente. Sin embargo teníamos la gran limitación de que no se podían aplicar filtros a los formularios publicados con form services, es decir, aquellos que queriamos visualizar directamente con nuestro explorador web desde nuestra intranet de SharePoint (en mi experiencia el 100% de los casos).

Pues bien, de nuevo desde Microsoft han escuchado las exigencias de los usuarios y combinando la integración total de Infopath 2010 con SharePoint 2010 y la capacidad de filtrar campos en los formularios publicados via web, el tema queda totalmente resuelto y es realmente sencillo conseguir selectores de opciones desplegables filtrados en cascada.

A continuación os voy a guiar a través de un sencillo ejemplo para que veais claro cómo se hace y lo fácil que es conseguirlo:

Primero crearemos una lista en SharePoint 2010 que contenga las 2 columnas de datos que nos interesan una de categoría primari (master) y otra de categoria secundaria (detail). En mi caso he creado las columnas "Autor" y "Título" (haciendo referencia a una biblioteca de libros). Rellenamos la lista con algunos valores de ejemplo.

Ahora abrimos Infopath 2010 y creamos una nueva plantilla de formulario en blanco y pulsamos en el icono de "diseñar este formulario". Una vez dentro del infopath, lo primero que haremos será asegurarnos que el formulario es compatible con el explorador web, para ello pulsamos en el menú "Archivo" y después en "opciones de formulario avanzadas". En la sección de "compatibilidad" nos aseguramos que está en "Formulario de explorador web" (por defecto se pone en Infopaht 2007) y pulsamos el botón de "Aceptar".

Ahora hay que crear la conexión de datos, de forma que vamos a ir a la pestaña de "datos" de la Ribbon y seleccionar el icono "desde la lista de sharepoint". Aquí se nos abrirá un wizard prácticamente igual al de la versión 2007 donde podremos seleccionar el sitio, la lista y los campos que queremos obtener, en este punto seleccionaremos los campos que hemos creado (master & detail) en la lista de SharePoint a propósito del ejercicio (en mi caso "Autor" y "Título"):


Finalizamos la creación de la conexión de datos indicando en las siguientes pantallas que no queremos almacenar una copia de los datos en la plantilla del formulario, le asignamos un nombre a la conexión y que recupere los datos automáticamente cuando se abre un formulario.

Una vez hemos creado la conexión de datos, vamos a crear un formulario muy simple con un título a elegir y una tabla de 2x2 en la que pondremos en la primera columna los nombres de nuestros campos y en la segunda columna sendos campos de tipo lista desplegable para que quede un formulario como el de la siguiente imagen:
Ahora seleccionamos el primer campo desplegable (doble click) y en la cinta Ribbon pulsamos en "propiedades del control". Aquí podemos darle un nombre más propio al campo, y seleccionamos como origen de datos "Obtener opciones desde un origen de datos externo", seleccionamos nuestra conexión de datos creada anteriormente y tanto para el campo "valor" como en "nombre para mostrar" seleccionaremos el campo master (en mi caso "Autor").

Aceptamos todas las ventanas y volvemos al formulario. Ahroa seleccionaremos el 2º campo y realizaremos los mismos pasos que para el primer campo, seleccionando esta vez el campo "detail" del origen de datos (en mi caso "Título"). Antes de aceptar la ventana principal de las propiedades del cuadro desplegable, pulsamos en el icono que hay a la derecha del xpath de nuestra conexión y aquí pulsamos en el botón inferior izquierdo de "Filtrar Datos", en la siguiente ventana pulsaremos el botón de "Agregar" y en la ventana de "Especificar condiciones de filtro" creamos la condición de que el campo master de nuestro origen de datos secundario sea igual al primer campo desplegable que hemos creado en el formulario (origen de datos principal).

Una vez hecho esto ya tenemos la conexión del campo detail filtrada segun en campo master. Ahora solo tenemos que publicar el formulario en cualquier lista de nuestro SharePoint 2010 (podemos crearla en SharePoint o desde el mismo asistente de publicación) y... voila! ya tenemos los campos desplegables filtrados en cascada en nuestro formulario web integrado en SharePoint y sin haber programado una línea de código!!

¿Cuantas veces deseasteis poder hacer esto con el 2007?

¡¡Saludos!!

4 comentarios:

Rafa dijo...

Buenos días:

Ha probado a realizar este formulario añadiendo más datos en el la columna "Autor" ?

La verdad es que ha sido de gran ayuda encontrar esta información, pero no me bloquea datos en la segunda lista desplegable.

Explico mi caso:

Tengo dos columnas de datos en la lista Sharepoint (en un futuro tendré más pero está en fase prueba):

datos:
COLUMNA 1-------COLUMNA 2
A 1
A 2
B 1

En teoría, al seleccionar en la primera lista desplegable la opción B me debería dar sólo la opción "1" en la segunda columna, sin embargo me aparece también la opción "2".

¿Podría ayudarme en ello?

Saludos y muchas gracias.

Anónimo dijo...

Perdón: no se aprecia bien:
Columna 1: A-A-B
Columna 2: 1-2-1

Anónimo dijo...

Ignasi Tebé

Cómo lo hago para una lista donde al seleccionar Autor se complete automáticamente libro?

Yanina Maulén Vivanco dijo...

no me toma los datos de la lista de sharepoint