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;
            }
        }
    }
}
时间: 2024-10-02 13:49:12

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

SharePoint 2013/2010 根据当前用户的某个属性过滤搜索结果

本文讲述如何在SharePoint 2013/2010 中根据当前用户的某个属性过滤搜索结果. 最近客户有一个需求,就是根据用户所在的国家(User Info List里面有Country字段),在搜索时只显示该用户所在国家的记录(对应的list 有Country 字段). 一般来说SharePoint 搜索是根据当前用户的权限来决定是否可以搜索到对应的记录,但是过是这样的话,需要将列表的所有记录都打破权限记录,这是非常损耗性能的,而且这样的权限结构维护起来很复杂. 本文将使用 ISecurit

Powershell 功能函数大全(Sharepoint 2013/2010)

Powershell 功能函数大全 说明: 本文章讲述powershell操作大全,是笔者多时积累完成.一步步从底层网站架构搭建,到网页内容的呈现, 均由powershell完成. 考虑到网站内容框架的移植,比如从开发环境到测试环境,再到产品环境,底层框架内容可由Powershell一键部署,这样更加方便以及可维护性.考虑到项目架构搭建的异同,初步分为以下步骤: 1. Poweshell 对 Site Column的完整操作 2. Powershell 对 Content Type的完整操作 3

在SharePoint 2013/2010 解决方案中使用一般处理程序

本文讲述如何在 在SharePoint 2013/2010 解决方案中添加 ashx (HttpHandler). 一般处理程序(HttpHandler)是·NET众多web组件的一种,ashx是其扩展名.一个httpHandler接受并处理一个http请求,类比于Java中的servlet.类比于在Java中需要继承HttpServlet类,在.net中需要实现IHttpHandler接口,这个接口有一个IsReusable成员,一个待实现的方法ProcessRequest(HttpConte

如何在 在SharePoint 2013/2010 解决方案中添加 ashx (HttpHandler)

本文讲述如何在 在SharePoint 2013/2010 解决方案中添加 ashx (HttpHandler). 一般处理程序(HttpHandler)是·NET众多web组件的一种,ashx是其扩展名.一个httpHandler接受并处理一个http请求,类比于Java中的servlet.类比于在Java中需要继承HttpServlet类,在.net中需要实现IHttpHandler接口,这个接口有一个IsReusable成员,一个待实现的方法ProcessRequest(HttpConte

每天的学习经验:SharePoint 2013 定义自己添加的产品清单。Callout菜单项、文档关注、SharePoint服务机端对象模型查询

前言: 前一段时间一直都比較忙.没有什么时间进行总结,刚好节前项目上线.同一时候趁着放假能够好好的对之前遇到的一些问题进行总结. 主要内容有使用SharePoint服务端对象模型进行查询.为SharePoint 自己定义列表项加入callout菜单.希望能够给大家带来一些帮助. 1.  在aspx页引用可视化Web部件 有时候会须要在页面中引用项目中创建的可视化Web部件,详细步骤有下面这几步: 1) 在aspx页面顶部注冊该可视化Web部件 示比例如以下: <%@ Register Tagpr

SharePoint 2013/2010 中的日历重合 (Calendars Overlay)

日历重合 (Calendars Overlay)的用途就是将 不多于10个日历或日历视图聚集在一个 日历视图中显示,并且可以用不同颜色区分来自不同 日历或日历视图的事件. 1.首先创建一个List View,名称为“ColorCalendar”,Filter中设置根据“Category”值为空过滤数据:此ListView设置为默认视图,作为重合(Overlay)视图的主视图. 2.创建根据Category Column对应的下拉值的List View,例如创建名称为“Meeting”的List

SharePoint 2013跨网站集发布功能简介

在SharePoint Server 2013网站实施中,我们经常会遇到跨网站集获取数据,而2013的这一跨网站集发布功能,正好满足我们这样的需求. 使用SharePoint 2013中的跨网站发布,我们可以使用列表和其他库来存储在发布网站上重复使用的内容,通过内容搜索部件来读取配置的跨网站集信息,下面,让我们通过一个简单的例子,了解一下这一功能吧! 1.使用SharePoint 2013跨网站集发布功能,首先需要在源网站和目标网站开启Cross-Site Collection Publishi

在使用SQL server High Availability 的SharePoint 2013 Farm环境中使用Import-SPMetadataWebServicePartitionData

本文讲述笔者在在使用SQL server High Availability 的SharePoint 2013 Farm环境中使用Import-SPMetadataWebServicePartitionData遇到的问题,希望对大家有帮助. 笔者最近使用Export-SPMetadataWebServicePartitionData 从开发环境导出Metadata ,然后使用Import-SPMetadataWebServicePartitionData将Metadata 备份文件导入到使用SQ

SharePoint 2013的限制(二)网站集和列表/文档库

网站集的限制 一个SharePoint场最多支持750,000个网站集,其中包括500,000 个人站点和250,000普通站点.在一个Web Application下面放置过多的网站集会消耗WFE上的大量的内存. Search在爬大量的网站集的时候,也会在WFE上造成大量的内存占用. 一个安全的做法是,当一个web application的内存达到2GB的时候,就应该recycle. 一个Web Application下最多支持250,000个网站集.一个Site collection能有多大