Sharepoint 确定输入的值是用户还是组-客户端对象模型
我正在玩SharePoint Online的客户端对象模型和应用程序。我可以使用FieldUserValue对象从Person和Groups字段中检索信息,但是,如何从中确定输入的值是用户还是SharePoint组 据我所知,FieldUserValue只有一个LookupId和LookupValue作为其属性,这并没有指定它是否是一个组。我是否在这方面走错了路,是否有更好的方法查询字段并检查值是否是SharePoint组的用户Sharepoint 确定输入的值是用户还是组-客户端对象模型,sharepoint,csom,sharepoint-online,sharepoint-apps,Sharepoint,Csom,Sharepoint Online,Sharepoint Apps,我正在玩SharePoint Online的客户端对象模型和应用程序。我可以使用FieldUserValue对象从Person和Groups字段中检索信息,但是,如何从中确定输入的值是用户还是SharePoint组 据我所知,FieldUserValue只有一个LookupId和LookupValue作为其属性,这并没有指定它是否是一个组。我是否在这方面走错了路,是否有更好的方法查询字段并检查值是否是SharePoint组的用户 谢谢您可以通过获取用户信息列表中列表项的内容类型来确定用户字段值是
谢谢您可以通过获取
用户信息列表中列表项的内容类型来确定用户字段值是用户
还是组
:
public static string GetUserFieldType(ClientContext ctx,FieldUserValue value)
{
var userInfoList = ctx.Site.RootWeb.SiteUserInfoList;
var userInfo = userInfoList.GetItemById(value.LookupId);
ctx.Load(userInfo,i => i.ContentType);
ctx.ExecuteQuery();
return userInfo.ContentType.Name;
}
用法
假设列表包含单值用户字段,则:
using (var ctx = new ClientContext(webUrl))
{
ctx.Credentials = CreateSPOCredentials(userName, password);
var list = ctx.Web.Lists.GetByTitle(listTitle);
var listItem = list.GetItemById(itemId);
ctx.Load(listItem);
ctx.ExecuteQuery();
var userVal = listItem[fieldName] as FieldUserValue;
var type = GetUserFieldType(ctx,userVal);
var isUser = type == "Person";
var isGroup = type == "SharePointGroup";
}
也许有一些有用的东西:FieldUserValue singleValue=(FieldUserValue)targetItem[“Single”]代码>FieldUserValue[]multValue=targetItem[“多个”]作为FieldUserValue[]代码>从。此外,您还可以猜测您对您的案例感兴趣的领域(而不是“单个”和“多个”)