2010-01-17 58 views
1

問候,的SharePoint:複製一個SPListItem

我已經寫了可以應用到任何文檔庫我自己的ContentType定義時應用源的ContentType到目的地。當用戶將該項目複製到我的ContentType定義尚未附加到的文檔庫時,我想通過ContentType保留與項目相關的數據。

顯而易見的事情似乎是捕獲新項目的ItemAdding或ItemUpdating事件,查看源項目以查看我的ContentType是否與其關聯,然後將我的ContentType添加到目標文檔庫在複製實際發生之前。

問題是,在這些事件中我找不到任何信息,告訴我源項目是什麼。唯一的這樣的數據在最終的ItemUpdated事件中,但是到時候已經太遲了......該項目已被複制,並且與我的ContentType相關的數據被丟棄。

任何人有任何想法,我怎麼能得到我想要的行爲?

TIA任何幫助!

史蒂夫

PS:有一兩件事我想我可以做的就是在ItemUpdated事件的源地址,然後編寫代碼來添加的ContentType並手動移動與該類型源相關的數據到達目的地。與我上面提出的解決方案相比,這看起來很不雅觀。

回答

0

只是跟進,萬一有人有興趣的最終解決我的問題......

我做了什麼得到我想要的行爲:

  1. 將我的代碼移至ItemUpdated事件處理程序,以便在副本完全發生後進行操作。

  2. 獲取源項目URL(見之前的答案),並解決與源SPList和SPListItem

  3. 看看,看看我的ContentType是源,但不是終點。

  4. 如果ContentType不在目標中,請將ContentType安裝到目標中,並手動將該ContentType中的屬性(通過查詢ContentType本身)從源複製到目標。

該過程只發生在複製到目標庫的第一個項目中。之後,ContentType已經存在於dest lib中,並且SP本身將該類型的字段值從源複製到目標。

0

我想通了!答案是源URL位於ItemUpdating事件屬性的AfterProperties字段中。你得到它是這樣的:在調試器

properties.AfterProperties["_CopySource"]; 

我看着這個領域,但被事實,那就是在那個對象,顯示了成員拋出「計數= 0」。我誤解這意味着裏面什麼都沒有,但事實證明,這個數字與那裏有多少物業無關。糟糕!

不幸的是,我試圖做的仍然不起作用。即使我將ContentType添加到ItemUpdating事件中的目標庫中,與該類型關聯的字段也不會被複制。哦...

相關問題