我有一个事件接收器用于列表项更新时(ItemUpdated而不是ItemUpdating)。在接收器内部,我再次更新列表项。这自然会像我期望的那样引发一些递归事件调用。在事件处理程序的开头设置一个断点,我认为它在事件中停止10次然后它就完成了。可能在SharePoint内部存在某种递归保护,以防止出现这种情况吗?
答案 0 :(得分:12)
使用DisableEventFiring方法
base.DisableEventFiring();
item.update();
base.EnableEventFiring();
答案 1 :(得分:1)
更安全的方法:
try {
this.DisableEventFiring();
item.SystemUpdate(); // or item.Update(); or item.UpdateOverwriteVersion();
} finally {
this.EnableEventFiring();
}
以防您的更新调用由于某种原因失败。
答案 2 :(得分:0)
现代方式(未被谴责):
EventFiringEnabled = false;
item.Update();
EventFiringEnabled = true;
答案 3 :(得分:-2)
或者使用item.SystemUpdate(),SystemUpdate会执行更新,而不会触发附加到项目的任何事件。