2009-08-27 121 views
0

之前猜測的附件路徑我有一些代碼,插入一個列表項爲列表...的SharePoint:更新列表項

然後我有這樣的代碼

SPFolder folder = web.Folders["Lists"].SubFolders[list.RootFolder.Name].SubFolders["Attachments"].SubFolders[item.ID.ToString()]; 

       foreach (SPFile file in folder.Files) 
        { 
         string attachmentName = this.downloadedMessageID + ".xml"; 
         if (file.Name == attachmentName) 
         { 
          SPFieldUrlValue value = new SPFieldUrlValue(); 
          value.Description = this.downloadedMessageID + ".xml"; 
          value.Url = this.SiteAddress + file.Url; 
          item["ZFO"] = value; 
         } 
        } 

,這是好的,除了一個問題... ...此代碼之前實際工作......我需要調用item.update()方法將項目保存到SharePoint ...

但你可以看到有更多的工作要做.. 。item.update叫...

因此,這意味着...我有

work 
    item.update(); 
    more work 
    item.update(); 

我遇到的問題是我真正想要的只是

work 
    item.update(); 

因此,在出現故障的任何情況下,整個事情會在一次或通失敗一次......(幾乎像一個SQL事務)。

那麼什麼阻止我這樣做是 - 我需要一個超鏈接設置爲列表項目的領域之一,這將是在列表中的附件收集的附件。

有什麼辦法,我可以預測,而不必保存列表項MOSS這個地址?

回答

3

的附件路徑取決於項目的ID,我不相信,直到你保存你的項目將有一個ID。您是否考慮過將附件存儲在文檔庫中,並通過您嘗試設置的字段進行鏈接?

事務性操作是不完全的SharePoint的特長。

+0

我需要有1個所有emcompassing對象。但是,謝謝......你是對的,物品ID是解決問題的關鍵。有什麼方法可以探究這個物品ID可能是什麼? – 2009-08-27 13:26:32

+0

真的沒有。您可以根據當前的最大ID猜測,並希望最近添加的項目沒有被刪除(並且您沒有同時操作),但我不會推薦它。如果第二次更新失敗,我只會使用兩個更新並嘗試手動回滾。 – dahlbyk 2009-08-27 13:35:44

+1

我「愛SharePoint」的另一個原因是, – 2009-08-27 13:42:19