viernes, 21 de septiembre de 2012

¿Cómo ordenar los combos de InfoPath 2007 con datos de listas de SharePoint?

Cuando trabajamos con formularios InfoPath 2007 en SharePoint 2007 y creamos un combo cuyo origen de datos es una lista de SharePoint nos encontramos con un problema: los datos no se pueden ordenar en forma alfabética. Este problema se da específicamente cuando el formulario se ve en formato Web.

Existe una solución relativamente sencilla a este problema que consiste en conectar el combo a una vista ordenada de la lista, en lugar de conectarlo directamente a la lista. A continuación explicaré brevemente cómo resolver el inconveniente en tres pasos:

  1. Crear una vista de la lista ordenada
  2. Reemplazar el origen de datos
  3. Publicar el formulario

 

Crear una vista de la lista ordenada

Para cada combo de nuestro formulario, creamos una nueva vista en la lista, en donde debemos cuidar sólo dos aspectos:

  • Que la vista esté ordenada
  • Que traiga todos los ítems (que no pagine)

Esto es sencillo y se hace desde el browser con las opciones estándar de SharePoint:

image

image

Una vez que hemos creado la vista, necesitamos obtener el GUID de la vista para poder usar en nuestro origen de datos dentro de InfoPath. Para ello, lo más sencillo, es aplicar un filtro a la lista, por ejemplo por el título. Veremos como cambia la URL y se agrega el parámetro VIEW en el que podremos ver el GUID de la vista, por ejemplo:

View={550179F3-6C8C-4B82-9EDA-ECC91B98BE54}

También necesitamos el dato del GUID de la lista. Lo podremos obtener fácilmente desde la configuración de la lista, también aparecerá en la URL y obtendremos algo como lo siguiente:

List=%7B0D11A089%2D561F%2D47C8%2D8EDB%2D072D646878B3%7D

que podemos convertirlo a:

List={0D11A089-561F-47C8-8EDB-072D646878B3}

Con esos datos, ya podremos crear una URL que devolverá un XML a nuestro origen de datos, ordenado:

http://surpoint/sites/sales/_vti_bin/owssvr.dll?Cmd=Display&List={0D11A089-561F-47C8-8EDB-072D646878B3}&View={550179F3-6C8C-4B82-9EDA-ECC91B98BE54}&XMLDATA=TRUE&noredirect=true

Obtendremos un XML similar a este:

image

 

Reemplazar el origen de datos

El segundo paso es más sencillo. En nuestro caso estamos editando un InfoPath creado desde un tipo de contenido. Hacemos clic en “Editar Plantilla” desde la configuración avanzada de nuestro tipo de contenido:

image

Se abrirá InfoPath y aparecerá un mensaje como el siguiente:

image

Hacemos clic en Yes y se abrirá nuestro formulario. Luego vamos a la sección de rigen de datos desde Tools / Data Connections y hacemos clic en ADD, eligiendo las opciones tal como se muestra en la siguiente imagen:

image

image

image

image

image

Luego hacemos doble clic sobre el combo que consume los datos de la lista de SharePoint. Se abrirá una pantalla llamada Drop-Down List Box Properties. En la sección Data Source, cambiamos el origen de datos que apuntaba a una lista de SharePoint. Elegimos nuestro XML ordenado.

Y luego en “Entries” elegimos el elemento que corresponda:

image

Listo, nuestro formulario se encuentra en condiciones de ser publicado.

 

Publicar el formulario

Seleccionamos la opción “Publish Form Template”:

image

Nos avisa que será grabado localmente:

image

Lo grabamos y luego seguimos el asistente de publicación tal como se ve en las siguientes imágenes:

image

image

image

En el paso final, publicamos y aparecerá una pantalla como la siguiente:

image

Luego vamos a nuestras librería (la que utiliza este formulario)y agregamos el nuevo tipo de contenido. Dentro de la sección “Cambie el orden del botón nuevo y el tipo de contenido predeterminado” podemos elegir si queremos que la versión anterior de nuestro tipo de contenido permanezca visible o no.

Y aquí termina, ya podemos utilizar nuestro nuevo formulario, pero estas vez, nuestros combos estarán ordenados.

Pueden encontrar parte de la información de este workaround en este artículo: http://blogs.msdn.com/b/infopath/archive/2007/01/15/populating-form-data-from-sharepoint-list-views.aspx

Hasta la próxima!

2 comentarios:

Hola, como puedo crear la URL, esta parte de la URL (_vti_bin/owssvr.dll?) tambien se debe incluir?

Si, debe ir la URL completa tal como figura en el documento. Pero debes reemplazar los GUID de lista y vista. Espero que te ayude. Saludos!

Publicar un comentario en la entrada