2008-10-15 74 views
3

我有一個簡單的事件處理程序,它帶有一個ItemAdding事件,用於更改ItemUpdated方法中所需的列值。上傳Word 2007文檔(* .docx,* .pptx或xlsx)後,該列的值會發生更改,但是當我保護該文檔時,該列的值將在ItemUpdated方法中消失。這隻會發生在Office 2007文檔中,其他文件不會清除其值。Sharepoint中的ItemUpdate與Office 2007文檔中的數據消失

的事件處理文檔庫運行在MOSS 2007

感謝

回答

4

我們有同樣的問題。看起來,列表中的屬性被添加到Office 2007文檔中,但僅在上傳/創建時使用該字段的默認值。一旦項目被編輯,我們正在經歷Office文檔值覆蓋在我們的事件處理程序中設置的值。

當使用異步事件處理程序時,我們不會遇到這種情況,但是異步事件處理程序與具有某些更新類型的其他線程上的更新發生衝突。

對於這個問題,我們與Microsoft保持緊密聯繫。他們承認這不是 還沒有結果。

嘗試使用異步事件處理程序(它比從Office文檔更新的代碼晚一點運行),但要謹慎。

UPDATE:

一種解決方法是設置SPWeb.ParserEnabled爲FALSE將刪除的文檔屬性,這將停止上述行爲的連接。它防止將列表屬性添加到Office文檔中。

0

如果您上傳的Office文檔到SharePoint,它試圖從文件中提取柱,並將其推廣到列表中。

請檢查您的文檔是否有任何屬性設置。如果是這樣,它可以解釋你所看到的。

注:提前開放文檔屬性,並刪除所有自定義屬性,以確保

0

我解決了將SPWeb.ParserEnabled = false放在ItemUpdating方法中的問題。

代碼:

properties.ListItem.Web.ParserEnabled = false; 

感謝所有幫助

0

設置SPWeb.ParserEnabled =虛假的工作,但也有效果!一個非常引人注目的是它會打破網站和列表模板。如果SPWeb.ParserEnabled = false,並且您保存了列表或網站模板,那麼它的元數據未設置(功能ID,產品版本等),並且它將不可用於可供選擇的模板列表。您可以通過在itemUpdated事件期間重置SPWeb.ParserEnabled = true來解決此問題,但我尚未完全測試這是否能夠解決所有問題...

相關問題