场景:SharePoint 中的文档库,列 x 为“个人或组”类型。从 VBA 宏(或 VSTO 加载项)中,我们尝试访问文档上的 MetaProperty 以设置/获取用户名。任何通过 ContentTypeProperties 集合访问该值的尝试都会引发
类型不匹配错误 (13)。
MetaProperty 对象的 Type 属性说它是msoMetaPropertyTypeUser. 我找不到任何关于如何使用这种类型的 MetaProperties 的示例。有人对此有经验吗?
谢谢!
场景:SharePoint 中的文档库,列 x 为“个人或组”类型。从 VBA 宏(或 VSTO 加载项)中,我们尝试访问文档上的 MetaProperty 以设置/获取用户名。任何通过 ContentTypeProperties 集合访问该值的尝试都会引发
类型不匹配错误 (13)。
MetaProperty 对象的 Type 属性说它是msoMetaPropertyTypeUser. 我找不到任何关于如何使用这种类型的 MetaProperties 的示例。有人对此有经验吗?
谢谢!
你应该能够做这样的事情:
using (SPSite site = new SPSite("http://yoursite/subsite"))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["DocLibraryName"];
SPListItemCollection items = list.GetItems(list.Views["All Documents"]);
foreach (SPListItem item in items)
{
item["Modified By"] = "Updated Value";
}
}
}
通过索引 SPListItem 的列名,文档的任何元数据都应该可用。
我做的。
这里的trick其实是要知道,如果你在Word文档的自定义属性中,在MOSS users中放一个用户索引对应的字符串,MOSS就会识别出来,并找到对应的用户来映射字段。
所以你只需要调用 http:///_vti_bin/usergroup.asmx 使用函数 GetUserInfo 并从中检索用户索引(ID)。
MOSSusergroup.UserGroup userGroupService = new MOSSusergroup.UserGroup();
userGroupService.Credentials = System.Net.CredentialCache.DefaultCredentials;
System.Xml.XmlNode node = userGroupService.GetUserInfo(userLogin);
string index = node.FirstChild.Attributes["ID"].Value;