2009-08-27 15 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; 
         } 
        } 

このコードを持っている、これは以外の罰金です1つの問題は...このコードが実際に動作する前にアイテムをSharePointに保存するにはitem.update()メソッドを呼び出す必要があります。

。item.updateの後に...

は、これは私が私が午前問題は、私は本当にただ

work 
    item.update(); 

だから、失敗のいずれにしても全部が一度やパスで失敗したくあり

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

を持っている...意味しますすぐに....(ほぼSQLトランザクションのように)。

私はこれをやっていないのですか?リストアイテムのフィールドの1つにハイパーリンクを設定する必要があります。これはリスト添付ファイルコレクションの添付ファイルになります。

MOSSにリスト項目を保存せずにこのアドレスを予測できる方法はありますか?

答えて

3

添付ファイルのパスはアイテムIDによって異なりますが、アイテムを保存するまでアイテムがIDを持つとは思われません。代わりに、設定しようとしているフィールドにリンクされているドキュメントライブラリに添付ファイルを保存することを検討しましたか?

トランザクション処理は、SharePointの強力な訴訟ではありません。

+0

私はすべての包囲オブジェクトを1つ持つ必要があります。しかし、ありがとう...あなたが正しいです、アイテムIDはパズルの鍵です。この商品IDの内容を調べる方法はありますか? –

+0

本当にありません。あなたは現在の最大IDに基づいて推測することができ、最も最近追加されたアイテムが削除されていない(そしてあなたは同時に操作していない)ことを願っていますが、私はそれをお勧めしません。 2回目の更新が失敗した場合は、2回の更新を使用して手動のロールバックを試みます。 – dahlbyk

+1

私が「SharePointを愛する」もう一つの理由は、 –

関連する問題