SharePoint 2013/2010 在一个列表或文档库内移动列表项,文档和目录位置而保持last modify by 等系统字段保持不变
本文讲述SharePoint 2013/2010 在一个列表或文档库内移动列表项。文档和目录位置而保持last modify by 等系统字段保持不变的解决方式。
近期遇到客户一个需求,在一个列表或文档库内移动列表项,文档和目录位置而保持last modify by 等系统字段保持不变。
研究出来了。不敢独享。特此共享出来给同鞋们做參考:
using Microsoft.SharePoint; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MoveSPListItemTool { class Program { static void Main(string[] args) { SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite site = new SPSite("http://SP2013/")) { site.AllowUnsafeUpdates = true; using (SPWeb web = site.OpenWeb()) { SPList list = web.Lists["Documents"]; var itemNeedToMove = list.GetItemById(7); MoveItemTo(itemNeedToMove, "TestDocumentSet"); } } }); Console.WriteLine("Done!"); Console.ReadKey(); } // Path 參数实例: Folder1, Folder1/Folder2 public static void MoveItemTo(SPListItem item, string path) { switch (item.FileSystemObjectType) { case SPFileSystemObjectType.Folder: var newFolder = string.Format("{0}/{1}/{2}", item.ParentList.RootFolder.Url, path, item.Folder.Name); item.Folder.MoveTo(newFolder); break; case SPFileSystemObjectType.File: if (item.File == null) { var file = item.Web.GetFile(item.Url); var newFilePath = string.Format("{0}/{1}/{2}_.000", item.ParentList.RootFolder.Url, path, item.ID); file.MoveTo(newFilePath); } else { var file = item.Web.GetFile(item.Url); var newFilePath = string.Format("{0}/{1}/{2}", item.ParentList.RootFolder.Url, path, item.File.Name); file.MoveTo(newFilePath); } break; } } } }