2012-02-17 103 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中計算列中編寫公式的更多信息,而無需任何代碼。