Sharepoint 2010事件接收器ItemUpdated触发两次

时间:2013-08-14 07:59:56

标签: sharepoint-2010 sharepoint-workflow event-receiver

我将三个事件附加到我的CustomLists:

  • ItemAdded
  • ItemUpdated
  • ItemDeleting

在一个列表中,我有一个工作流程,它正在更改该列表中的列。因此,当我编辑该列表中的条目时,ItemUpdated-Event会触发两次。在其他列表(没有任何工作流程)上,我的接收器工作正常。

如何确定工作流程是否称为我的事件接收器?

触发事件的工作流程或触发事件的用户之间是否存在差异?

2 个答案:

答案 0 :(得分:1)

您可以将隐藏字段添加到列表中,该字段始终按工作流程设置(并且仅由工作流程设置)。然后,您将看到工作流是否称为事件接收器。

或者

您可以在工作流程项目中创建HandleEventFiring类,并在工作流程中的更新之前和之后使用DisableAllEventFiring和EnableAllEventFiring

public class HandleEventFiring : SPItemEventReceiver
{

  public void DisableAllEventFiring()
  {
   this.DisableEventFiring();
  }

 public void EnableAllEventFiring()
 {
  this.EnableEventFiring();
 }

}

答案 1 :(得分:0)

回答你的第一个问题:
是的,您可以找到您的工作流程。最简单的方法是使用SharePointManager 2010和

  1. 导航到您的网站集
  2. 列表 - > [您的清单] - >事件接收者
  3. 检查每个事件接收器的属性并删除两次触发的事件接收器。
  4. 我不知道我是否正确理解了你的第二个问题,但是这里有: 工作流可以由用户手动启动,也可以在列表项

    时自动启动
    • 已添加
    • 已更新或
    • 已删除

    除此之外,没有太大差异。