0

这是我必须记录更新/更改项目的工作流状态的日期的代码。我在列表中创建了名为 Completed Date 的自定义列作为日期类型来显示日期。

工作流部署良好,但未在“完成日期”列下呈现任何数据。我错过了什么吗?

namespace WorkflowDateRecorder.EventReceiver1
{
/// <summary>
/// List Item Events
/// </summary>
public class EventReceiver1 : SPItemEventReceiver
{
   /// <summary>
   /// An item is being updated.
   /// </summary>
   public override void ItemUpdating(SPItemEventProperties properties)
   {
       base.ItemUpdating(properties);
       if (properties.BeforeProperties["Wokflowstatus"] != properties.AfterProperties["Wokflowstatus"])
       {
           properties.ListItem["Completed Date"] = DateTime.Now;
           properties.ListItem.Update();
           properties.Web.Update();
       }
   }


}

}

4

1 回答 1

0

ItemUpdating方法中,您应该使用设置新字段值

properties.AfterProperties[Completed_x0020_Date] = newFieldValue;
//AfterProperties and BeforeProperties are using internal names of columns.

那么问题是,如果您的 if 语句被访问过?原因调用ListItem.Update()很可能会导致对该事件接收器的递归调用。

于 2012-11-19T22:53:49.567 回答