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 :