SharePoint 2010: Comment Copier une Liste dans la Même Collection de Sites en C# (fr-FR)
Note : Cet article est une traduction.
Introduction
Récemment, quelqu'un a exprimé le besoin de copier des listes SharePoint au sein de la même collection de sites. C'est pourquoi afin d'automatiser ce processus à un seul endroit, j'ai développé cette application console. Ce code peut être modifié selon le besoin. Il doit être exécuté à partir de n'importe quel WFE et les valeurs d'entrée sont explicites. Il fonctionne avec SharePoint 2007 de même qu'avec SharePoint 2010. Cet outil crée en interne un modèle à partir de la liste source, puis crée à l'aide de ce modèle la liste de destination. Une fois la liste créée, le modèle créé à l'étape précédente est supprimé afin que la prochaine fois il puisse être exécuté sans aucun problème avec la même liste source.
Exemple de code C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
namespace CopyListInSameSiteCollection
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("This tool copies a list within the same site collection");
Console.WriteLine("Please enter the URL of the Source Site");
String sourceSite = Console.ReadLine();
Console.WriteLine("Please enter the name of the source list");
String sourceListName = Console.ReadLine();
Console.WriteLine("Please enter the URL of the Destination Site");
String destinationSite = Console.ReadLine();
Console.WriteLine("Please enter the name of the Destination list");
String destinationListName = Console.ReadLine();
Console.WriteLine("Please enter the description of the Destination list");
String destinationListDescription = Console.ReadLine();
try
{
using (SPSite site = new SPSite(sourceSite))
{
using (SPWeb web = site.OpenWeb())
{
SPList sourceList = web.Lists[sourceListName];
String templateName = sourceList.Title;
String templateFileName = sourceList.Title;
sourceList.SaveAsTemplate(templateFileName, templateName, sourceList.Description,true);
SPListTemplate listTemplate = site.GetCustomListTemplates(web)[templateName];
String destinationWeb = destinationSite.Remove(0, site.Url.Length + 1);
using (SPWeb destWeb = site.OpenWeb(destinationWeb))
{
destWeb.Lists.Add(destinationListName, destinationListDescription, listTemplate);
destWeb.Update();
}
SPList listTemplates = site.RootWeb.Lists["List Template Gallery"];
SPListItemCollection listTemplateItems = listTemplates.Items;
foreach (SPListItem listTemplateItem in listTemplateItems)
{
if(listTemplate.Name.Equals(listTemplateItem["Title"]))
{
listTemplateItem.Delete();
listTemplates.Update();
break;
}
}
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Console.WriteLine("The List is copied");
}
}
}
Voir aussi
Autres langues
Cet article est également disponible dans les langues suivantes :