2009-12-01 6 views
1

J'ai plusieurs SiteCollections, chaque SiteCollection associé à leur propre ContentDatabase. Maintenant, quelques SPListItems sont ajoutés à l'un des SiteCollections qui doivent être déplacés dans une autre SiteCollection et donc dans une autre ContentDatabase. Les questions sont: Comment déplacer des ListItems entre ces différentes Collections dans une autre ContentDatabase? Une solution consiste à exporter l'élément avec SPExport et à l'importer dans la base de données cible. Mais c'est plutôt moche et il y a beaucoup de ListItems dans le trou.Déplacement de SPListItems entre différentes ContentDatabases

Répondre

2

C'est le seul moyen que j'ai trouvé pour déplacer efficacement un élément de la liste. Malheureusement, vous perdez tout le flux de travail et l'historique des versions qui y sont associés. Naturellement, si vous deviez utiliser ce code, il aurait besoin d'une petite modification car je ne déplace que l'élément de liste dans le même SPWeb. De plus, vous devrez effectuer une vérification du type de contenu pour vous assurer que les mêmes champs sont disponibles dans la liste de destination.

 private void CopyItem(SPListItem sourceItem, string destinationListName) 
     { 
      SPList destinationList = sourceItem.Web.Lists[destinationListName]; 
      SPListItem targetItem = destinationList.Items.Add(); 
      foreach (SPField field in sourceItem.Fields) 
      { 
       if (!field.ReadOnlyField && field.InternalName != "Attachments") 
       { 
        targetItem[field.Title] = sourceItem[field.Title]; 
       } 
      } 
      foreach (string fileName in sourceItem.Attachments) 
      { 
       SPFile file = sourceItem.ParentList.ParentWeb.GetFile(
        sourceItem.Attachments.UrlPrefix + fileName); 
       byte[] imageData = file.OpenBinary(); 
       targetItem.Attachments.Add(fileName, imageData); 
      } 
      targetItem.Update(); 
     } 
Questions connexes