使用 c# 将子任务添加到在线共享点中的任务(使用 Microsoft.SharePoint.Client)

Adding a sub-task to a task in sharepoint online with c# (using Microsoft.SharePoint.Client)

我已经成功地使用 c# 在 Sharepoint 在线添加任务,我正在努力(可能是因为缺少更好的搜索词如下):

如何向现有任务添加子任务/将子任务分配给父任务?

答案似乎在 ParentID 字段中,当通过 Sharepoint 任务列表在线手动输入时,该字段显示与另一个任务的连接。

在这种情况下,该字段为子节点显示以下条目:

-       [12]    {[ParentID, Microsoft.SharePoint.Client.FieldLookupValue]}&nbsp;System.Collections.Generic.KeyValuePair<string, object>
        Key "ParentID"  string
-       Value   {Microsoft.SharePoint.Client.FieldLookupValue}  object {Microsoft.SharePoint.Client.FieldLookupValue}
        LookupId    60  int
        LookupValue "60"    string

        TypeId  "{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}"    string

我有父节点的 ID(例如 60),我从互联网上的研究中了解到要修复的 TypeID(希望我对此的研究是正确的)。 我认为关键可能是使用 KeyValuePair 并将结果分配给 ParentID。这是我的代码:

var list = new List<KeyValuePair<string, string>>() {
new KeyValuePair<string, string>("60", "f1d34cc0-9b50-4a78-be78-d5facfcccfb7"), }; 

listItem["Title"] = "do something";
listItem["ParentID"] = list;
listItem.Update();
context.ExecuteQuery();

我得到的结果或更准确地说抛出的异常是{"Unknown Error"}。

我现在不知道该去哪里,或者下一步该做什么,你有什么想法吗? KeyValuePair 的想法是否正确?

示例代码供您参考。

using (var clientContext = new ClientContext(siteUrl))
            {
                clientContext.Credentials = new SharePointOnlineCredentials(login, securePassword);
                List myList = clientContext.Web.Lists.GetByTitle("MyTask");

                ListItemCreationInformation listItemCreationInformation = new ListItemCreationInformation();
                ListItem newItem = myList.AddItem(listItemCreationInformation);
                newItem["Title"] = "subTask";
                newItem["Body"] = "body";
                FieldLookupValue lookupParent = new FieldLookupValue();
                //hardcode for test purpose
                lookupParent.LookupId = 3;
                newItem["ParentID"] = lookupParent;
                newItem.Update();
                clientContext.ExecuteQuery();
}