在項目開發中遇到了這樣的問題,需要將一個列表從網站A遷移到網站B中去。
查了很多資料,沒有在MOSS的管理功能中找到實現的方法。
所以只能通過編程的方法來實現。
google了一下,網上只找到了3篇關於內容遷移的文章,方法是一樣的,匯出再匯入。
三篇文章的連結如下:
http://sharepoint.orivers.jp/blogs/orivers/archive/2007/03/19/spexport.aspx
https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1885455&SiteID=1
https://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1460700&SiteID=17
對於遷移列表的功能,第三篇文章的內容比較合適。
如果是遷移網站,在SDK中,有相關的代碼可供參考。
列表遷移的代碼這裡就不寫了,上面的文章中有,我也是使用的這些代碼。
這裡要說明的是,使用上面的代碼,遷移的列表在兩個網站中必須是同名的。
舉例,要將網站A中的列表list5遷移到網站B中去,遷移中還是會使用list5作為列表的名字。如果網站B中已經有list5存在了,就會出現錯誤。
這個問題困擾我2個多小時,嘗試了多次也沒有辦法通過程式來解決,所以最後只能使用手工修改的方法。
步驟如下:
第1步:將網站A的列表匯出為cab檔案
第2步:解壓縮cab檔案,替換xml檔案中的列表的名字。比如在網站A上是list7,在網站B上是list5,就將xml檔案中的list7替換成list5。一般需要替換三個檔案。
第3步:使用makecab將替換之後的檔案再壓縮成cab檔案。這裡提供一個ddf檔案內容供參考。
.OPTION EXPLICIT
.Set CompressionType=MSZIP
.Set UniqueFiles="off"
.Set Cabinet=on
.Set MaxDiskSize=CDROM
.Set MaxCabinetSize=0
.Set FolderFileCountThreshold=0
.Set DiskDirectory1=d:\cab
.Set CabinetName1=export.cab
;FileList
00000000.dat
00000001.dat
00000002.dat
00000003.dat
00000004.dat
ExportSettings.xml
Manifest.xml
Requirements.xml
RootObjectMap.xml
SystemData.xml
UserGroup.xml
ViewFormsList.xml
第4步:在網站B上建立列表list5,建立時必須使用和網站A的list7相同的清單類型,比如,都是基於自訂欄表建立的。。
第5步:將重新壓縮的cab檔案匯入網站B。
這是我找到的唯一的辦法。
也嘗試過其它第三方的管理工具中的複製的功能,但是那個程式出現了錯誤,沒有實現目標。
希望還能有更好的方法解決這個問題。