要做到这一点从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中也是如此。
感谢您的详细解答。非常感激 – 2013-04-06 10:07:20