使用REST保存人员或组字段

时间:2013-01-28 06:14:40

标签: sharepoint sharepoint-2013

有谁知道如何使用REST保存人员字段?

我尝试了以下内容并且有效:

{ 
   "__metadata": { "type": "SP.Data.SomeListListItem" } , 
   "MyPersonFieldId" : 1
}

但这只有在您知道身份证时才有效。我没有那个!我怎么才能得到它?我的密钥是i.0#w|domain\userName

我尝试了以下内容,它也无效:

{ 
   "__metadata": { "type": "SP.Data.SomeListListItem" } , 
   "MyPersonField" : { "__metadata": { "type": "SP.Data.UserInfoItem" }, "Name": "i.0#w|domain\userName" }
}

任何想法?谢谢!

3 个答案:

答案 0 :(得分:5)

我没有使用Person字段完成此操作,但我确实使用托管元数据字段执行了类似的操作。我基本上必须传递附加信息作为对象来创建字段中的值。

查看是否传递了用户的ID以及名称是否有效。我自己也要尝试这个,因为我有同样的需要。

{
     "MyPersonField": { "Name": "i.0#w|domain\userName", "ID": 1 }
}

编辑:好的,更新此字段比我想象的要容易。我只需将用户的ID传递到Id字段即可执行更新:

{
     "MyPersonFieldId": 1
}

这意味着用户应该已经在网站集中,因此如果用户不存在,请求将失败。

答案 1 :(得分:0)

问题是用户信息是一个查找字段,因此如果您使用OData端点,您的SharePoint列表中不存在MyPersonField,我真的不知道如何保存数据但是当我尝试阅读时遇到同样的问题用户。

例如{server} / {api} / list / getbytitle('mylist')/ items不返回MyPersonField而是返回MyPersonFieldId,

但如果我们使用

{server} / {api} / list / getbytitle('mylist')/ items /?$ select = *,MyPersonField / Name& $ expand = MyPersonField我们可以使用MyPersonField查找值

答案 2 :(得分:0)

使用以下代码获取当前用户ID以将用户保存在人员和组列下。人员列名称为'Other'。但是要保存用户,我们必须将列名指定为Other

Requestor