Данные, исчезающие после ItemUpdate в Sharepoint с документами Office 2007

У меня есть простой обработчик событий с событием ItemAdding, которое изменяет значение столбца, которое мне нужно в методе ItemUpdated. После загрузки документа Word 2007 (* .docx, * .pptx или xlsx) значение столбца изменяется, но когда я защищаю документ, значение столбца исчезает в методе ItemUpdated. Это происходит только с документами Office 2007, другие файлы не очищают значение.

Обработчик событий запускается в библиотеке документов в MOSS 2007.

Спасибо


person Esteban Lalinde    schedule 15.10.2008    source источник


Ответы (4)


У нас такая же проблема. Похоже, что свойства из списка добавляются в документ Office 2007, но только со значениями по умолчанию для поля при загрузке / создании. После редактирования элемента мы обнаруживаем, что значения офисных документов переопределяют значения, установленные в нашем обработчике событий.

Мы не наблюдаем этого при использовании асинхронного обработчика событий, но асинхронный обработчик событий конфликтует с обновлениями в других потоках с определенными типами обновлений.

У нас есть активный звонок в службу поддержки Microsoft по этой самой проблеме. Они признают, что это еще не результат.

Попробуйте использовать асинхронный обработчик событий (он выполняется немного позже кода, который обновляется из офисного документа), но с осторожностью.

ОБНОВЛЕНИЕ:

Обходной путь - установка SPWeb.ParserEnabled значение FALSE удалит соединение со свойствами документа, что остановит указанное выше поведение. Это предотвращает добавление свойств списка в офисный документ.

person Nat    schedule 15.10.2008

Когда вы загружаете документ Office в SharePoint, он пытается извлечь столбец из документа и переместить их в список.

Убедитесь, что в вашем документе установлен какой-либо атрибут. Если это так, он может объяснить то, что вы видите.

Примечание: откройте дополнительные свойства документа и удалите все настраиваемые свойства, чтобы убедиться

person Nico    schedule 15.10.2008

Я решаю проблему, задав SPWeb.ParserEnabled = false в методе ItemUpdating.

код:

properties.ListItem.Web.ParserEnabled = false;

Спасибо всем за помощь

person Esteban Lalinde    schedule 16.10.2008

Установка SPWeb.ParserEnabled = false работает, но есть эффекты! Одна очень заметная проблема заключается в том, что это нарушит работу шаблонов сайтов и списков. Если SPWeb.ParserEnabled = false и вы сохраняете список или шаблон сайта, его метаданные не установлены (идентификатор функции, версия продукта и т. Д.), И они не будут доступны в списке шаблонов для выбора. Возможно, вы сможете обойти это, сбросив SPWeb.ParserEnabled = true во время события itemUpdated, но я еще не полностью проверил, решит ли это все проблемы ...

person Community    schedule 30.01.2009