Данные исчезают после ItemUpdate в Sharepoint с документами Office 2007 - PullRequest
3 голосов
/ 15 октября 2008

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

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

Спасибо

Ответы [ 4 ]

4 голосов
/ 16 октября 2008

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

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

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

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

UPDATE:

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

0 голосов
/ 31 января 2009

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

0 голосов
/ 16 октября 2008

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

код:

properties.ListItem.Web.ParserEnabled = false;

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

0 голосов
/ 15 октября 2008

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

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

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

...