把一个文档集(document set)复制到另一个文档库(library)中

点击打开链接

Document Set(文档集)是SharePoint 2010的新功能,今天我向大家展示一个将文档集从一个文档库复制到另一个文档库的方法。

要想操作文档集对象,需要引用“Microsoft.Office.DocumentManagement.DocumentSets.dll”这个代码集。举个例子,如果我想将一个文档集“Testing”从“Source”文档库复制到“target”文档库中:


简单地说,我们只需要将整个“Testing”文档集(包含其中的所有文档)从“Source”文档库中导出到一个地方(这里是保存到byte[] 中),然后再把这些数据导入到“target”文档库中就可以了,这两个操作SharePoint已经为我们提供了,就是 “DocumentSet.Export”和“DocumentSet.Import”这两个方法,以下是具体的代码:

  1. using (SPSite site = new SPSite("http://yoursiteurl"))  
  2. {  
  3.     using (SPWeb web = site.OpenWeb())  
  4.     {  
  5.         SPList sourceList = web.Lists["Source"];  
  6.         SPListItem sourceItem = sourceList.Folders[0];  
  7.         DocumentSet documentSet = DocumentSet.GetDocumentSet(sourceItem.Folder);  
  8.    
  9.         SPList targetList = web.Lists["Target"];  
  10.         SPContentTypeId contentTypeId = targetList.ContentTypes["Document Set"].Id;  
  11.         byte[] documentSetData = documentSet.Export();  
  12.         string documentSetName = documentSet.Item.Name;  
  13.         SPFolder targetFolder = targetList.RootFolder;  
  14.         Hashtable properties = sourceItem.Properties;  
  15.         DocumentSet.Import(documentSetData, documentSetName, targetFolder, contentTypeId, properties, web.CurrentUser);            
  16.     }   
  17. }  

如果在执行“DocumentSet.Import”的过程中,有“DocID:Site prefix not set”错误,可以通过执行下面的Powershell来解决:

    1. $site = Get-SPSite http://yoursiteurl    
    2. $properties = $site.RootWeb.Properties                                                                  
    3. $properties["docid_msft_hier_siteprefix"] = ""                                                                  
    4. $properties.Update() 

posted on 2015-09-10 11:47  !无名之辈  阅读(288)  评论(0)    收藏  举报