2

场景:SharePoint 中的文档库,列 x 为“个人或组”类型。从 VBA 宏(或 VSTO 加载项)中,我们尝试访问文档上的 MetaProperty 以设置/获取用户名。任何通过 ContentTypeProperties 集合访问该值的尝试都会引发

类型不匹配错误 (13)。

MetaProperty 对象的 Type 属性说它是msoMetaPropertyTypeUser. 我找不到任何关于如何使用这种类型的 MetaProperties 的示例。有人对此有经验吗?

谢谢!

4

2 回答 2

1

你应该能够做这样的事情:

    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 的列名,文档的任何元数据都应该可用。

于 2008-09-05T13:30:58.010 回答
1

我做的。

这里的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;
于 2008-11-10T18:46:15.907 回答