24 de octubre de 2007

Reutilizar Contenido de Listas entre Sites

Uno de los mayores problemas al trabajar con listas de SharePoint es el problema de la reutilización.

Cuando trabajamos en desarrollo una de las cosas que solemos hacer es preparar una serie de tablas de soporte que utilizaremos para ayudarnos a lo largo de la aplicación.
Por ejemplo, la típica tabla de países o idiomas que terminamos utilizando en casi el 60% de la aplicación.
En SharePoint reutilizar listas no ha sido una tarea sencilla hasta ahora, hace poco me preguntaban cual es el truco para hacer esto. Mi respuesta es sencilla. Publicar contenidos por medio de las columnas de sitio ( Site Columns ).
En el ejemplo de los países, si en una lista creásemos una columna de tipo Lookup apuntando a otra lista que contiene países obtendríamos el país para seleccionar ... pero ... qué pasaría si la lista de países no está en este mismo site, si no que está en un site de nivel inferior a este ... o en otro site aunque esté a 10 niveles por debajo.
No podríamos acceder a los contenidos ...
Vamos a seguir con este ejemplo de países para que veáis lo sencillo que es propagar la lista por todo el portal.


Lo primero que hacemos es crearnos una lista ( Custom List ) en el Site Principal ( Site Collection ) y la llamamos 'Países'.
Una vez creada la lista la rellenamos con los países que deseemos que sean públicos a lo largo de todo el portal.

Bien, ya tenemos nuestra tabla de 'soporte' como teníamos cuando desarrollábamos con bases de datos y no con SharePoint. (Por cierto, esta misma solución se podría hacer con Bussiness Data Connection!).
Vamos a crearnos una columna de Sitio ( Site Column ) que nos permita propagar este contenido.
Para ello vamos a la página de Configuraciones del Site Collection y en la sección de Galleries seleccionamos Columnas de Sitio ( Site Columns ).
Una vez en la galería de Columnas de Sitio ( Site Column Gallery ) vamos a crear una nueva columna de sitio con el nombre País, tipo LookUp. En la lista de contenidos seleccionamos 'Países' ( que es la lista que hemos creado anteriormente y desde la cual vamos a mantener nuestro repositorio de países para todo el portal ) y en el nombre de columna seleccionamos 'Título' ( Title ).
En caso de que queramos que esta columna se comporte de forma multiselección solo tendríamos que seleccionar el check 'Allow multiple values' ( Permitir múltiples valores ). Y aceptamos la creación.
Bueno, la propagación ya la tenemos preparada. Ahora solo queda reutilizar estos valores a lo largo del portal.
Vamos a crearnos un nuevo site y una lista de contactos a la que vamos a agregar nuestra columna de países para seleccionar.
Para ello, una vez creada la lista entramos en la configuración y pulsamos en 'Agregar de Columnas de Sitio Existentes' ( Add from existing site columns ). De la lista de las columnas que tenemos seleccionamos País para agregarla a la lista. y Pulsamos en aceptar.

Bien, pues ya tenemos la lista preparada para hacer uso de nuestra lista 'Maestra' de países. Si agregamos un nuevo contacto, al final del formulario podréis ver como aparece un desplegable que os muestra la lista de países que hemos configurado.
Esta es una manera sencilla de poder reutilizar contenido de un site en otro sin tener que hacer complejos flujos de trabajo que mantengan el mismo contenido en diferentes listas.

4 comentarios:

Ropi dijo...

Deseo hacer algo similar pero en sharepoint 2003. Hay alguna forma ?

Robert dijo...

Trato de hacer lo siguiente:
1ro segui tus instrucciiones para la reutilizacion de listas, ahora trato de agregar una lista en un subsite pero que jale la informacion de la lista del Home y que cuando cambie la informacion en alguna de las dos listas, ésta se vea reflejada en la lista ya sea del Home o del SubSite. Se puede? Colo lo hago?

Strawcita dijo...

Quiero tener un site con una lista; o conjunto de listas (relacionadas) es información de mis contactos empresariales y/o clientes.

Datos Personales
Datos Laborales
Perfil
Habilidades
Roles, etc.

Para iniciar quiero hacer esto en un site, y posteriormente en otros sites mostrar VISTAS con parte de esta información; ya que no todas las áreas verán la misma información, sin embargo que cada área pueda administrarla de manera sincronizada. Es posible?

Espero que me haya dado a entender.

Best Wishes... :)

Anónimo dijo...

Hola tengo el siguiente problema:
Cree una lista de clientes en un sitio, luego en otro sitio quiero agregar a un formulario que una columna del mismo este relacionado con el nombre del cliente, pero solo se relaciona con contenidos del mismo sitio. Todo esta bajo un mismo sitio principal con varios subsitios.
Seria de gran ayuda una solucion a esto.
Muchas gracias!