【发布时间】:2012-02-17 13:10:15
【问题描述】:
我已经编写了一个自动填充共享点列表中的列的工作流。当我添加一个新条目时,什么也没有发生。但是,如果我转到另一个列表,然后返回带有工作流的列表,我可以看到它已经工作了。我已将工作流程设置为在创建新项目时开始,工作流程中是否还有其他设置可以使其立即更新?
【问题讨论】:
标签: sharepoint sharepoint-2010 sharepoint-designer
我已经编写了一个自动填充共享点列表中的列的工作流。当我添加一个新条目时,什么也没有发生。但是,如果我转到另一个列表,然后返回带有工作流的列表,我可以看到它已经工作了。我已将工作流程设置为在创建新项目时开始,工作流程中是否还有其他设置可以使其立即更新?
【问题讨论】:
标签: sharepoint sharepoint-2010 sharepoint-designer
没有,没有。您应该改用 SPItemEventReceiver 并使用 ItemUpdating 方法。这是立即起作用的方法,工作流程需要一些时间才能启动,并且它是异步运行的。此外,工作流程很繁重,您应该避免将它们用于非常简单的操作。
事件接收器的示例代码是
public class MyEventReceiver :SPItemEventReceiver
{
public override void ItemUpdating(SPItemEventProperties properties)
{
UpdateField(properties);
}
public override void ItemAdding(SPItemEventProperties properties)
{
UpdateField(properties);
}
private void UpdateField(SPItemEventProperties properties)
{
EventFiringEnabled = false;
var item = properties.ListItem;
// do calculation here
item.SystemUpdate(false); // this update that is most suitable for automatic updates
EventFiringEnabled = true;
}
}
然后将此事件接收器添加到列表中。我希望这个link 有帮助
【讨论】: