如何从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;

         }

如何从SharePoint Service Reference中的UserInformationListItem获取用户

如果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;
            }

         }