2012-02-17 79 views
1

我已经写了一个工作流程来自动填充SharePoint列表中的列。当我添加一个新条目时,什么都不会发生但是,如果我转到另一个列表,然后返回到工作流列表,我可以看到它已经工作。我已经设置了工作流程,以便在创建新项目时开始工作流程,工作流程中是否存在其他一些设置以使其立即更新?Sharepoint工作流程没有更新

回答

0

不,没有。您应该使用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帮助

+0

感谢您的建议。听起来像是一条好路。但是,我没有视觉工作室。有没有一种方法可以通过Sharepoint设计者来实现这一点? – DasPete 2012-02-17 15:54:26

0

如果你不能使用Visual Studio,你也可以尝试添加一个计算列到你的列表。这样最难的一点是定义一个公式,该公式将从列表项的其他列中获取数据并执行计算。 link1link2可以为您提供有关如何在SharePoint中计算列中编写公式的更多信息,而无需任何代码。