Copia de listas en Sharepoint


Hace unos días en el foro Baleares On .Net pedían un ejemplo para fusionar listas en MOSS 2007. Aquí tenéis un ejemplo rápido de cómo se pueden hacer estas cosas gracias al modelo de objetos de WSS. Basta con crear una aplicación de consola con una referencia a la librería Microsoft.Sharepoint.dll (v12) y escribir un código parecido a éste (si lo parametrizais un poco quedará mucho más bonito):

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;

namespace ListMerge
{
class Program
{
static void Main(string[] args)
{
//abre el sitio
Console.WriteLine("Abriendo sitio...");
SPSite mySite
= new SPSite("http://localhost");
SPWeb myWeb
= mySite.OpenWeb();

//obtiene las listas
Console.WriteLine("Obteniendo listas...");
SPList list1
= myWeb.Lists["task list 1"];
SPList list2
= myWeb.Lists["task list 2"];

//crea una nueva lista para copiar las dos anteriores
Console.WriteLine("Creando nueva lista...");
Guid newListId
= myWeb.Lists.Add("nueva Lista",
"nueva lista a partir de otras dos",
list1.BaseTemplate);

SPList newList
= myWeb.Lists[newListId];
newList.Update();

//copia la primera lista
Console.WriteLine("copiando lista 1");
foreach (SPListItem item in list1.Items)
{
SPListItem newItem
=newList.Items.Add();
foreach (SPField field in item.Fields)
{
if (!field.ReadOnlyField)
{
if (newList.Fields.GetField(field.Title) != null)
{
try
{
newItem[field.Title]
= item[field.Title];
}
catch (Exception ex)
{
//algunos campos puede que no se puedan
//copiar (attachments, etc...)
Console.WriteLine(ex.Message);
}
}
}
}
//necesario para crear el item
newItem.Update();
}

//copia la segunda lista, código exacto al anterior
Console.WriteLine("copiando lista 2");
foreach (SPListItem item in list2.Items)
{
SPListItem newItem
= newList.Items.Add();
foreach (SPField field in item.Fields)
{
if (!field.ReadOnlyField)
{
if (newList.Fields.GetField(field.Title) != null)
{
try
{
newItem[field.Title]
= item[field.Title];
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
newItem.Update();

}

newList.Update();
Console.WriteLine(
"Finalizado!!!");
Console.ReadLine();
}
}
}
Anuncios

Un Comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s