Я экспериментировал с чтением метаданных столбцов SharePoint 2013 сайта из C# VSTO на уровне приложений Word 2010.Чтение/запись поля пользователя SharePoint [Word 2010 VSTO]
Для тестирования я установил столбцы сайта для каждого типа, который использует SharePoint, а затем создал тип содержимого документа, который связывается со всеми ними - таким образом, все эти столбцы встроены в документ Word (выглядит как хранимый в customXml в файле документа).
Посредством чтения из свойства _Document.ContentTypeProperties
в коде VSTO я могу получить доступ ко всем типам, но мне трудно получить доступ к данным столбца сайта Person или Group - я получаю COM-исключения, пытающиеся читать или писать к объекту .Value
.
Глядя на схеме XSD в customXml, я могу видеть одинарное значение столбец пользователя состоит из трех значений: DisplayName
(типа string
), AccountType
(типа string
) и AccountId
(типа UserId
) - однако я не видят способ чтения/записи из/в это в VSTO? Многозначные столбцы пользователя выглядят совершенно разными и состоят из двух значений string
: идентификатор (как представляется, идентификатор пользователя SharePoint) и строковый идентификатор (или, по крайней мере, это то, что, по-моему, i:0#.w|domain\userid
, в любом случае).
Word само может редактировать как одно-, так и многозначные данные столбцов пользователя через панель документов, но только если Word в настоящее время подключен к SharePoint - в противном случае функциональность отключена. Я бы предположить то же самое будет справедливо и для VSTO, если я мог бы получить доступ к значениям на всех ...
Мои два вопроса:
Есть ли способ для чтения/записи одно- и многозначные поля пользователя из кода VSTO (даже если это не через свойство
_Document.ContentTypeProperties
)?Есть ли способ сделать Q1, если он не подключен к SharePoint (если, скажем, значения известны коду)?
(я был несколько излишне многословен в случае мои разработки до сих пор полезны для кого-то еще, даже если я не получаю ответы, как представляется, не будет большой объем информации об этом в любом месте)
Я думал, что мне, возможно, придется напрямую модифицировать данные customXml - я надеялся, что мне не нужно просто для одного типа. Я посмотрю на это - спасибо! – Reznikk
Да, AFAICS нет интерфейса, который предоставляет внутреннюю структуру объекта ContentTypeProperty для этого типа Property. –
Огромное спасибо за ваши усилия - и хотя это, безусловно, похоже на единственный доступный вариант, я бы хотел оставить короткое обозначение «правильным», если появится другое потенциальное решение (вы никогда не знаете с вещами VSTO ...). – Reznikk