如何从SharePoint Service Reference中的UserInformationListItem获取用户
本文关键字:中的 UserInformationListItem 获取 用户 Reference Service SharePoint | 更新日期: 2023-09-27 18:15:12
我正在通过WCF和listdata.svc 访问SharePoint列表数据
我的一个名为"任务"的列表中有一个名称为"AssignedTo"的字段。当我循环浏览列表项时,AssignedTo字段返回UserInformationListItem,而不是字符串值。
如何获取分配任务的人员的用户名?它应该来自UserInformationList,但我不知道如何获得它
这是我的代码:
SpIMDLists.InformationManagementDivisionDataContext dc = new SpIMDLists.InformationManagementDivisionDataContext(new Uri("https://myurl/SiteDirectory/IMD/_vti_bin/ListData.svc/"));
dc.Credentials = System.Net.CredentialCache.DefaultCredentials;
var source = dc.Tasks;
foreach (var task in source)
{
string taskTitle = task.Title;
string taskDesc = task.TaskDescription;
string taskDueDate = task.DueDate.ToString();
string taskStartDate = task.StartDate.ToString();
string taskStatusValue = task.StatusValue;
string taskOutcome = task.TaskOutcome;
string taskAssignedTo ="";
System.Collections.ObjectModel.Collection<SpIMDLists.UserInformationListItem> assignedTo = task.AssignedTo;
}
如果AssignedTo字段是Person或Group字段,则它包含用户或组的SharePoint ID。例如:
<d:AssignedToId m:type="Edm.Int32">8</d:AssignedToId>
在这种情况下,用户的SharePoint ID为8。要获取用户名,您必须查看位于/''vti_bin/ListData.svc/UserInformationList的UserInformationList
。您可以获取UserInformationList中的所有用户并将其存储在数组中,也可以通过如下创建URL来查找特定用户(使用我们示例中的用户ID 8(:/_vti_bin/ListData.svc/UserInformationList(8)
如果你想在浏览器中看到这个用户,你可以在以下URL上看到:/_layouts/userdisp.aspx?ID=8
。
或者,您可以使用以下端点来获得相同的信息:_vti_bin/ListData.svc/Tasks(1)/AssignedTo
在本例中,1是任务的ID。你的方法取决于你的需求。
更多信息:
http://yetanothersharepointblog.wordpress.com/2012/12/11/working-with-sharepoint-lookup-columns-in-knockout-js/
http://social.technet.microsoft.com/Forums/office/en-US/8e6badbf-a270-4b8e-9a62-c9f7be44ada2/rest-api-how-to-get-author-name?forum=sharepointdevelopmentprevious
UPDATE:感谢您的输入。这让我找到了以下解决方案。这就是我获取用户名的方法。AssignedTo是一个复杂的字段,所以我必须使用Expand来填充它。然后我只循环通过AssignedTo集合来获取用户(在这种情况下,任务只分配给1个用户(。
这是我的新工作代码:
SpIMDLists.InformationManagementDivisionDataContext dc = new SpIMDLists.InformationManagementDivisionDataContext(new Uri("https://myurl/SiteDirectory/IMD/_vti_bin/ListData.svc/"));
dc.Credentials = System.Net.CredentialCache.DefaultCredentials;
var source = dc.Tasks;
foreach (var task in source.Expand("AssignedTo")
{
string taskTitle = task.Title;
string taskDesc = task.TaskDescription;
string taskDueDate = task.DueDate.ToString();
string taskStartDate = task.StartDate.ToString();
string taskStatusValue = task.StatusValue;
string taskOutcome = task.TaskOutcome;
var assignedTo = task.AssignedTo;
foreach (var usr in assignedTo)
{
string taskAssignedTo = usr.Name;
}
}