sharepoint 2010 自定义列表启用版本记录控制 如何在修改数据不产生新版本

本文介绍了在SharePoint2010中如何通过使用item.SystemUpdate(false)方法来修改条目数据而不产生新版本。该方法适用于已启用版本控制的列表。

在sharepoint 2010 中,我们对条目item的数据进行修改时,首先需要将web.AllowUnsafeUpdates这个属性设置为true,也就是web.AllowUnsafeUpdates = true;

接下来就是对item的项进行赋值,例如item["columnname"]="value1";最后就是item.Update();

这样我们就完成了对一个条目item的数据修改。

然而前天发现了一个很严重的问题,当我们启动了版本控制之后,每当修改一次,就会产生一个新版本,并且把当前版本变成草稿或者待定状态,想了很久,最后发现item里面有两个update的方法,一个是item.Update(),另一个是item.SystemUpdate(false);这两种方法,都能够实现对数据进行修改,同时也有区别,

item.Update()是会产生新版本,item.SystemUpdate(false)则不会有新版本。

下面是不产生新版本的一个实例:\

SPWeb web = SPContext.Current.Web;

 web.AllowUnsafeUpdates = true;

SPList list = web.Lists["我的文档"];

SPListItem item = list.GetItemById(7);

item["字段名称"] = "6";

item.SystemUpdate(false);

广州京微信息科技有限公司,微软sharepoint解决方案提供商。

利用VBA将Excel数据上传到SharePoint列表,并覆盖其中对应的数据是一个非常实用的功能,特别是对于需要频繁更新在线数据库的企业用户来说。下面是具体的步骤以及一些关键点: ### 步骤一:准备工作 1. **启用开发者工具** 确保您的Excel启用了“开发者”选项卡,这可以帮助您更方便地编写和调试VBA代码。 2. **引用必要的库** 需要在VBA编辑器中添加对`Microsoft SharePoint Foundation Web Services`的引用。通过`Tools -> References...`找到并勾选这个库。(注意实际名称可能会略有差异) ### 步骤二:连接至SharePoint网站 ```vba Dim spSite As New SPWeb Set spSite = GetSPSite("http://your-sharepoint-site-url") ``` 请注意替换URL为你的真实SharePoint站点地址。 ### 步骤三:获取目标列表 选择想要操作的具体List: ```vba Dim lstTarget As SPList Set lstTarget = spSite.Lists("Your List Name") ' 替换为你的列表名 ``` ### 步骤四:读取Excel表格内容准备上传 接下来遍历当前工作表的所有行,并收集需要同步的信息: ```vba Sub ReadDataAndUpload() Dim wsSource As Worksheet Set wsSource = ThisWorkbook.Sheets(1) ' 或者指定其他的工作表 Dim lastRow As Long lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow '假设首行为标题头信息 Call UploadSingleRecord(wsSource.Range("A" & i), ...) Next i End Sub ``` 此段代码示例仅用于说明如何循环读取单元格值;你需要根据实际情况调整列索引等细节。 ### 步骤五:创建或修改项目 当处理每一记录时,我们检查是否存在匹配项(例如基于唯一键)。如果存在,则更新现有条目;否则插入新条目: ```vba Function UploadSingleRecord(cellValue As Range) On Error GoTo ErrorHandler Dim listItem As SPListItem Dim itemFound As Boolean itemFound = False With lstTarget.Items .FilterField1 = "UniqueKeyColumn" .FilterValue1 = cellValue.Value If Not (.Count > 0) Then Set listItem = .Add() ' 插入新的Item ' 设置字段属性... Else Set listItem = .GetNextItem() ' 更新字段属性... Call listItem.Update ' 提交更改 End If ExitProc: Exit Function ErrorHandler: MsgBox ("Error occurred while uploading record.") Resume ExitProc End Function ``` 上述函数展示了基本框架,但是具体实现取决于你所使用的SharePoint版本自定义需求。 --- 由于涉及敏感权限问题,在真实环境中部署此类脚本前务必备份所有重要资料!
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值