1

WCF と listdata.svc を介して SharePoint リスト データにアクセスしています。

Tasks というリストの 1 つに、「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;


         }
4

2 に答える 2

0

更新:入力に感謝します。それは私を次の解決策に導きました。これでユーザー名を取得できました。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;
            }


         }
于 2014-07-30T15:18:48.163 に答える
0

AssignedTo フィールドが Person フィールドまたは Group フィールドである場合、ユーザーまたはグループの SharePoint ID が保持されます。例えば:

<d:AssignedToId m:type="Edm.Int32">8</d:AssignedToId>

この場合、ユーザーの SharePoint ID は 8 です。ユーザー名を取得するにはUserInformationList、/_vti_bin/ListData.svc/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 です。アプローチはニーズによって異なります。

詳しくは:

于 2014-07-29T17:41:01.280 に答える