Web services 如何通过“获取SharePoint用户配置文件”;“友好名称”;使用SP web服务?

Web services 如何通过“获取SharePoint用户配置文件”;“友好名称”;使用SP web服务?,web-services,sharepoint,sharepoint-2010,spweb,Web Services,Sharepoint,Sharepoint 2010,Spweb,我正在从客户端程序中的SharePoint列表中检索名称列表。这些名称是通过SharePoint中的名称选择器填充的。在列表查询返回的XML中,列表如下所示: "#10;#Some Name;#12;#Another Name;#15;#Yet AnotherName" 我的程序需要获得每个用户的帐户名(或电子邮件地址)。我可以使用GetUserProfileByName(“域\\用户名”),但我没有帐户名。我无法执行类似于GetUserProfileByName(“某个名称”)的操作,因为它

我正在从客户端程序中的SharePoint列表中检索名称列表。这些名称是通过SharePoint中的名称选择器填充的。在列表查询返回的XML中,列表如下所示:

"#10;#Some Name;#12;#Another Name;#15;#Yet AnotherName"
我的程序需要获得每个用户的帐户名(或电子邮件地址)。我可以使用
GetUserProfileByName(“域\\用户名”)
,但我没有帐户名。我无法执行类似于
GetUserProfileByName(“某个名称”)
的操作,因为它必须是帐户名

每个名称前的数字是索引或ID,但我不能使用
GetUserProfileByIndex(10)
,因为我必须管理自己的数据或拥有管理员凭据


因此,基本上它为我提供了两条重要的信息,但我无法使用它们检索任何进一步的信息。

我有一个非常混乱的解决方案,但我希望听到一些关于正确/优雅解决方案的想法

现在我正在
UserInfo
列表上使用
GetListItems
,创建一个
ows\u ImnName
ows\u Name
条目的字典,然后将列表查询中的字符串解析为名称,并将它们用作查找值


必须有更好的方法。

我有一个非常混乱的解决方案,但我很想听到一些关于正确/优雅解决方案的想法

现在我正在
UserInfo
列表上使用
GetListItems
,创建一个
ows\u ImnName
ows\u Name
条目的字典,然后将列表查询中的字符串解析为名称,并将它们用作查找值


一定有更好的方法。

你确定这个数字是索引吗,我想它可能是网站集的用户ID。这似乎也是一种奇怪的用户列表,但无论如何:

string result = "#10;#Some Name;#12;#Another Name;#15;#Yet AnotherName";
string[] users = result.Substring(1).Split(new string[2] { ";", "#" }, StringSplitOptions.RemoveEmptyEntries);
for (int j = 0; j < users.Length; j = j + 2) {
    using (ClientContext context = new ClientContext("http://yoursite")) {
        List list = context.Web.SiteUserInfoList;
        ListItem item = list.GetItemById(int.Parse(users[j]));
        context.Load(item, i => i.Id, i => i["Name"]);
        context.ExecuteQuery();
        object username = item["Name"];
    }
}
string result=“#10;#某个名字;#12;#另一个名字;#15;#还有另一个名字”;
string[]users=result.Substring(1.Split)(新字符串[2]{;”,“#”},StringSplitOptions.RemoveEmptyEntries);
对于(int j=0;ji.Id,i=>i[“Name”]);
context.ExecuteQuery();
对象用户名=项[“名称”];
}
}

如果您确定该数字是索引,我想它可能是网站集的用户ID。这似乎也是一种奇怪的用户列表,但无论如何:

string result = "#10;#Some Name;#12;#Another Name;#15;#Yet AnotherName";
string[] users = result.Substring(1).Split(new string[2] { ";", "#" }, StringSplitOptions.RemoveEmptyEntries);
for (int j = 0; j < users.Length; j = j + 2) {
    using (ClientContext context = new ClientContext("http://yoursite")) {
        List list = context.Web.SiteUserInfoList;
        ListItem item = list.GetItemById(int.Parse(users[j]));
        context.Load(item, i => i.Id, i => i["Name"]);
        context.ExecuteQuery();
        object username = item["Name"];
    }
}
string result=“#10;#某个名字;#12;#另一个名字;#15;#还有另一个名字”;
string[]users=result.Substring(1.Split)(新字符串[2]{;”,“#”},StringSplitOptions.RemoveEmptyEntries);
对于(int j=0;ji.Id,i=>i[“Name”]);
context.ExecuteQuery();
对象用户名=项[“名称”];
}
}

您是否可以控制这个包含姓名列表的列表?有些。你认为有没有办法改变列表的显示方式(比如提供帐户名而不是全名)?是的!!!有选项。选择列的类型为“人员和组”,并将“显示字段”设置为“帐户”。您将获得帐户详细信息:)您是否可以控制这个包含姓名列表的列表?有些。你认为有没有办法改变列表的显示方式(比如提供帐户名而不是全名)?是的!!!有选项。选择列的类型为“人员和组”,并将“显示字段”设置为“帐户”。您将获得帐户详细信息:)