为此,请从中获取用户列表,ClientContext.Current.Web.SiteUserInfoList
然后检查ContentType
返回的每个项目以确定它是什么。
但是检查内容类型并不是很直接,因为您实际上从每个项目中得到的只是一个ContentTypeID
,然后您必须在 中查找用户列表的内容类型ClientContext.Current.Web.SiteUserInfoList.ContentTypes
。该查找将返回一个 ContentType 对象,您可以从该Name
对象的属性中读取以查看列表项是什么。
因此,执行此操作的过度简化的代码块将是:
using Microsoft.SharePoint.Client;
...
ClientContext context = ClientContext.Current;
var q = from i in context.Web.SiteUserInfoList.GetItems(new CamlQuery()) select i;
IEnumerable<ListItem> Items = context.LoadQuery(q);
context.ExecuteQueryAsync((s, e) => {
foreach (ListItem i in Items) {
//This is the important bit:
ContentType contenttype = context.Web.SiteUserInfoList.ContentTypes.GetById(i["ContentTypeId"].ToString());
context.Load(contenttype); //It's another query so we have to load it too
switch (contenttype.Name) {
case "SharePointGroup":
//It's a SharePoint group
break;
case "Person":
//It's a user
break;
case "DomainGroup":
//It's an Active Directory Group or Membership Role
break;
default:
//It's a mystery;
break;
}
}
},
(s, e) => { /* Query failed */ }
);
您没有指定您的平台,但我在 Silverlight 中使用 SharePoint 客户端对象模型完成了所有这些工作。理所当然地,在 JavaScript 中也是可能的。