2008-10-15 73 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来解决此问题,但我尚未完全测试这是否能够解决所有问题...

相关问题