我在列表中有一个sharepoint字段,可以是用户或组。使用服务器对象模型,我可以轻松识别用户是否是一个组。
但是,我无法使用托管客户端对象模型找到实现此目的的方法。有没有办法知道。
我只是通过循环组列表并检查是否存在具有名称的组来设法使其工作。但是,这不完全正确或有效。也许有办法找出使用用户的ListItem。但我没有看到任何显示用户是管理员的字段。我也试过EnsureUser。如果用户不是组,则会崩溃。所以我可以通过使用try / catch来解决这个问题,但这将是非常糟糕的编程。
谢谢,
约瑟夫
答案 0 :(得分:2)
为此,请从ClientContext.Current.Web.SiteUserInfoList
获取用户列表,然后检查返回的每个项目的ContentType
以确定它是什么。
检查内容类型并不是很直接,因为您实际从每个项目返回的所有内容都是ContentTypeID
,然后您必须在{{1}查找用户列表的内容类型}}。该查找将返回一个ContentType对象,您可以从该对象的ClientContext.Current.Web.SiteUserInfoList.ContentTypes
属性中读取该列表项的内容。
因此,执行此操作的过度简化的代码块将是:
Name
...
using Microsoft.SharePoint.Client;
您没有指定您的平台,但我使用SharePoint客户端对象模型在Silverlight中完成了所有这些操作。按理说在JavaScript中也可以这样做。
答案 1 :(得分:0)
尝试Microsoft.SharePoint.Client.Utilities.Utility.SearchPrincipals(...)
:
var resultPrincipals = Utility.SearchPrincipals(clientContext, clientContext.Web, searchString, PrincipalType.All, PrincipalSource.All, null, maxResults);
返回类型PrincipalInfo
方便地具有PrincipalType属性,您可以检查Group。