SharePoint API 中SPListItem的更新

使用SharePoint API来操作文件,列表对象时,都会用到更新的方法,SharePoint中在更新SPListItem有3个方法:


Update


Updates the database with changes that are made to the list item. (Overrides SPItem.Update().)


SystemUpdate()


Updates the database with changes made to the list item without changing the Modified or Modified By fields.


UpdateOverwriteVersion


Updates the item without creating another version of the item.

在微软的API文档上简单的解释了一下,但是实际在开发的使用中发现这几个API里面的问题有很多,因此工作这些年也遇到了很多坑,这里总结一下,并且对这些API做一些详细的说明。

Update方法

微软的解释是把对当前SPListItem的更改更新到数据库中,这里面更详细的说明下:

  • 用来更新属性,此API可以更新属性,但是更新后Modified会变成当前时间和ModifiedBy为当前用户。如果开启了版本控制,会生成一个新的版本。
SPListItem splitemitem = list.GetItemById(1);

splitemitem["ColumnName"] = "TestValue";

splitemitem.Update();
  • 用来添加SPLitemItem,这种情况必须要用这个方法。
SPList list = web.GetList("/lists/announcements");
SPListItemCollection items = list.Items;

SPListItem item = items.Add();
item[SPBuiltInFieldId.Title] = "A new item!";
item[SPBuiltInFieldId.Body] = "This item was added by a call to the Add method.";
item[SPBuiltInFieldId.Expires] = DateTime.Now.AddHours(1);
item.Update();

UpdateOverwriteVersion

使用Update会产生新的版本,因此UpdateOverwriteVersion方法可以避免这个问题:

SPListItem splitemitem = list.GetItemById(1);
splitemitem["ColumnName"] = "TestValue";
splitemitem.UpdateOverwriteVersion();

SystemUpdate

使用上面两个方法都会更改变当前SPLitemItem的Modified和ModifiedBy信息,因此需要SystemUpdate这个方法。

SPListItem splitemitem = list.GetItemById(1);
splitemitem["ColumnName"] = "TestValue";
splitemitem.SystemUpdate();

但是在真正的使用过程中,会有一些特殊情况,会影响到上述API的行为,比如在开启了Content Approval功能后,Approved状态的文件一旦被修改,就会增长一个版本。如果文件被签出,使用Update也不会有问题。因此实际在使用中需要根据具体情况来看。

时间: 2024-10-24 12:50:28

SharePoint API 中SPListItem的更新的相关文章

SharePoint开发中的最佳实践(再续)

SharePoint开发中的最佳实践 20.SPViewScope介绍 Default :仅显示指定文件夹下的文件和子文件夹 FilesOnly:仅显示指定文件夹下的文件 Recursive:显示所有文件夹下的文件 RecursiveAll:显示所有文件夹下的所有文件和子文件夹 以上这个属性使用在CAML中,用于控制在哪些范围内进行查找,我们可以根据实际的查找需求,对这个ViewAttribute属性进行设置,来完成我们的操作. 21.SPGridView介绍 SPGridView在GridVi

SharePoint API如何处理时区问题

使用SharePoint API,我们经常会有时区转换的问题,SharePoint API 本身如何处理时区问题的呢? 本文主要以Modified字段为例测试相关API的行为. CSOM API测试: 输出代码: private static void ClientAPIOutputModified(ClientContext context, ListItem listItem) { context.Load(listItem); context.ExecuteQuery(); var mod

SharePoint 2013 中的 PowerPoint Automation Services

简介 许多大型和小型企业都将其 Microsoft SharePoint Server 库用作 Microsoft PowerPoint 演示文稿的存储库.所有这些企业在存储.分发和更新演示文稿方面都有其特定的需求.Microsoft PowerPoint Automation Services 是 Microsoft SharePoint Server 2013 的一种新功能,可帮助企业管理其演示文稿.它是一项共享服务,可提供无人参与的.服务器端至其他格式的演示文稿转换.其最初便是针对在服务器

Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化

9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Frist实现数据访问管理. 本例,我们模拟一个N层场景,用单独的客户端(控制台应用)来调用单独的基于REST服务的Web网站(WEB API应用) . 注意:每层使用单独的Visual Studio 解决方案, 这样更方便配置.调试和模拟一个N层应用. 假设有一个如Figure 9-3所示的旅行社和预订

React中setState同步更新策略

本文和大家分享的主要是React中setState同步更新相关内容,希望对大家学习React有所帮助. 为了提高性能React将setState设置为批次更新,即是异步操作函数,并不能以顺序控制流的方式设置某些事件,我们也不能依赖于 this.state 来计算未来状态.典型的譬如我们希望在从服务端抓取数据并且渲染到界面之后,再隐藏加载进度条或者外部加载提示: componentDidMount() { fetch('https://example.com') .then((res) => re

ASP.NET Web API中使用OData

在ASP.NET Web API中使用OData 一.什么是ODataOData是一个开放的数据协议(Open Data Protocol)在ASP.NET Web API中,对于CRUD(create, read, update, and delete)应用比传统WebAPI增加了很大的灵活性只要正确使用相关的协议,可以在同等情况下对一个CRUD应用可以节约很多开发时间,从而提高开发效率 二.怎么搭建 做一个简单的订单查询示例我们使用Code First模式创建两个实体对象Product(产品

在ASP.NET Web API中使用OData

http://www.alixixi.com/program/a/2015063094986.shtml 一.什么是ODataOData是一个开放的数据协议(Open Data Protocol)在ASP.NET Web API中,对于CRUD(create, read, update, and delete)应用比传统WebAPI增加了很大的灵活性只要正确使用相关的协议,可以在同等情况下对一个CRUD应用可以节约很多开发时间,从而提高开发效率 二.怎么搭建 做一个简单的订单查询示例我们使用Co

nodejs api 中文文档

文档首页 英文版文档 本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可. Node.js v0.10.18 手册 & 文档 索引 | 在单一页面中浏览 | JSON格式 目录 关于本文档 稳定度 JSON 输出 概述 全局对象 global process console 类: Buffer require() require.resolve() require.cache require.extensions __filename __dirname module e

Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化

前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET Web API中的JSON和XML格式化器. 在ASP.NET Web API中,媒体类型格式化器(Media-type Formatter)是一种能够做以下工作的对象: 从HTTP消息体读取CLR(公共语言运行时)对象 将CLR对象写入HTTP消息体 Web API提供了用于JSON和XML的媒体类