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

StackOverflow https://stackoverflow.com/questions/205913

Вопрос

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

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

Спасибо

Это было полезно?

Решение

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

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

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

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

ОБНОВЛЯТЬ:

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

Другие советы

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

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

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

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

код:

properties.ListItem.Web.ParserEnabled = false;

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top