Update()
- 更新数据库中的项目
- 更新"Modified"和"Modified by"值
- 创建一个新版本
SystemUpdate()
- 更新数据库中的项目
- "Modified"和"Modified by"值没有任何更改
- 没有新版本
- 触发项目事件
SystemUpdate(true)
- 与SystemUpdate()相同,并递增项目版本
- 使用SystemUpdate(false)与SystemUpdate()完全相同
UpdateOverwriteVersion()
- 更新项目但不创建新版本
- 更新"Modified"和"Modified by"值
禁用SharePoint项目事件触发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.SharePoint; namespace MYEventReceiver { class DisabledItemEventsScope : SPItemEventReceiver, IDisposable { bool oldValue; public DisabledItemEventsScope () { this.oldValue = base.EventFiringEnabled; base.EventFiringEnabled = false; } #region IDisposable Members public void Dispose () { base.EventFiringEnabled = oldValue; } #endregion } } |
现在,我们可以将此类与using语法一起使用来创建一个范围,在该范围内禁用所有项目事件触发。
像这样:
1 2 3 4 | using (DisabledItemEventsScope scope = new DisabledItemEventsScope ()) { item.Update (); //不会触发事件 } item.Update (); //将再次引发事件 |
它适用于上述任何SPListItem更新方法。所以我们也可以:
1 2 3 4 | using (DisabledItemEventsScope scope = new DisabledItemEventsScope ()) { item.SystemUpdate (true); //不会触发事件 } item.SystemUpdate (true); //将再次引发事件 |