我一直在嘗試從Word 2010應用程序級C#VSTO中讀取SharePoint 2013站點列元數據。讀/寫SharePoint用戶字段[Word 2010 VSTO]
爲了測試,我爲每個SharePoint使用的類型設置了Site Columns,然後創建了一個與它們相關聯的文檔內容類型 - 因此所有這些列都嵌入到Word文檔中(看起來存儲在文檔文件中的customXml)。
通過閱讀VSTO代碼中的_Document.ContentTypeProperties
屬性,我可以訪問大多數類型,但是我無法訪問「Person或Group」站點列的數據 - 我正在嘗試讀取或寫入COM異常到物品的.Value
屬性。
通過查看在customXml XSD架構,我可以看到一個單值的用戶列由三個值之一:DisplayName
(類型string
),AccountType
(類型string
)和AccountId
(類型UserId
) - 但是我在VSTO中沒有看到讀寫方式?多值用戶列看起來完全不同,並且由兩個值組成:一個ID(看起來是SharePoint用戶的ID)和一個基於字符串的ID(或者至少這就是我認爲i:0#.w|domain\userid
是,無論如何)。
Word本身可以通過文檔面板編輯單值和多值用戶列數據,但只有當Word當前連接到SharePoint時 - 否則功能被禁用。我倒是承擔同樣將是真實的VSTO,如果我能在所有訪問值...
我的兩個問題是:
是否有讀/寫的方式VSTO代碼中的單值和多值用戶字段(即使它不通過
_Document.ContentTypeProperties
屬性)?如果沒有連接到SharePoint(如果這些值已知代碼),是否有辦法執行Q1?
(我一直在有些情況下過於冗長我的工作方式,即使我沒有得到任何答案至今都對別人有用的;似乎沒有能夠成爲信息的這個大量的任何地方)
我想我可能不得不直接修改customXml數據 - 但我希望我不需要僅僅爲一種類型。我會看看這個 - 謝謝! – Reznikk
是的,AFAICS沒有爲這種類型的Property公開ContentTypeProperty對象的內部結構的接口。 –
非常感謝您的努力 - 儘管這看起來像是唯一可用的選項,但我希望在短時間內將其標記爲「正確」,以防出現另一個潛在的解決方案(您永遠不知道VSTO的東西...... )。 – Reznikk