2

我正在玩 SharePoint Online 的客户端对象模型和应用程序。我可以使用 FieldUserValue 对象从人员和组字段中检索信息,但是,如何确定输入的值是简单的用户还是 SharePoint 组?

据我所知,FieldUserValue 只有一个 LookupId 和 LookupValue 作为它的属性,它没有指定它是否是一个组。我是否走错了路,是否有更好的方法来查询该字段并检查该值是否是 SharePoint 组的用户?

谢谢

4

1 回答 1

6

您可以确定用户字段值是UserGroup通过获取列表项的内容类型在User Information List

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;
}

用法

假设 List 包含单值用户字段,则:

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";

  }
于 2014-12-28T21:32:46.917 回答