Add/update 包含用户信息的项目 Sharepoint 客户端 C#

Add/update item with users information Sharepoint Client C#

使用 Microsoft.Sharepoint.CLient & .Runtime.dll ver.16.0.0.0

我有一个项目列表(丢失的包裹),其中包含跟踪编号(标题)、描述(currier)、MailTo(类型:人员,显示字段:E-Mail ) 我还有另一个可供选择的可用用户列表(买家)

因此,我想从我的 C# 客户端程序添加或更新丢失包裹中的项目以及用户的 MailTo -Email-。现在我只能获取 ListItem 作者的名称作为字符串。如何从 ListItem 获取用户信息,以便将 MailTo 更改为特定用户

 public Package(ListItem _package) {
        this.item = _package;
        if (this.item != null) {
            this.exist = true;
            this.id = this.item["ID"].ToString();
            this.trackNo =  (String)this.item["Title"];
            this.currier = (String)this.item["Description"];
            this.status = (String)this.item["Status"];

            FieldUserValue userAuthor = (FieldUserValue)this.item["Author"];  
            this.Owner = userAuthor.LookupValue.ToString();

这里有一个示例代码供您参考,只需将User Id设置为FieldUserValue class,然后设置为MailTo字段:

        ClientContext clientContext = new ClientContext("http://sp/sites/dev");
        Web web = clientContext.Web;
        Microsoft.SharePoint.Client.List spList = clientContext.Web.Lists.GetByTitle("JerryList4");
        clientContext.Load(spList);
        clientContext.ExecuteQuery();
        ListItem item = spList.GetItemById(3);
        clientContext.Load(item);
        clientContext.ExecuteQuery();
        FieldUserValue userValue = new FieldUserValue();
        userValue.LookupId = 19; //set user Id here
        item["MailTo"] = userValue;
        item.Update();
        clientContext.ExecuteQuery();

对于用户id,你可以从这个Rest EndPoint得到它:

http://siteurl/_api/web/siteusers?$select=Id,LoginName