SharePoint 2013/2010 在一个列表或文档库内移动列表项,文档和目录位置而保持last modify by 等系统字段保持不变

Posted blfbuaa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
            }
        }
    }
}


 

以上是关于SharePoint 2013/2010 在一个列表或文档库内移动列表项,文档和目录位置而保持last modify by 等系统字段保持不变的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Sharepoint 2010 用户组中获取自定义列值

按列表列值创建自定义警报Sharepoint无法正常工作

Sharepoint Online 列表中“自动编号”列-Auto Number Column

Sharepoint 2010 - 通过 XSL 更改列表名称和列标题显示名称

Sharepoint计算列日期计算

通过 PowerQuery 从 Excel 加载 SharePoint Online 列表(带有查找列)数据