列出事件接收器以记录日期,当项目的工作流程状态已更新?

时间:2012-11-14 20:11:46

标签: events sharepoint-2010 event-handling workflow-activity sharepoint-list

以下是我必须记录项目工作流程状态更新/更改日期的代码。我在列表中创建了名为Completed Date的accustom列作为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();
       }
   }


}

}

1 个答案:

答案 0 :(得分:0)

ItemUpdating方法中,您应该使用

设置新的字段值
properties.AfterProperties[Completed_x0020_Date] = newFieldValue;
//AfterProperties and BeforeProperties are using internal names of columns.

那么,如果您的if语句被访问过,那么还有问题吗?因为调用ListItem.Update()最有可能导致在此事件接收器上进行递归调用。