[英]get users by group in sharepoint
任何人都可以告诉我如何使用sharepoint获取特定组内的用户?
所以我有一个包含用户和/或组的列表。 我想检索该列表中的所有用户。 有没有办法区分列表项是组还是用户。 如果它是一个组,我需要获得该组内的所有用户。
即时通讯使用c#,我试图通过使它成为一个控制台应用程序来做。
我是sharepoint的新手,我真的在这里跳进了游泳池的深处,任何帮助都将受到高度赞赏。
干杯..
您需要知道的第一件事是,当您有一个包含用户/组字段的列表时,您必须知道它的类型。 如果项目值中包含一个用户或组,则字段类型为SPFieldUserValue。 但是,如果该字段具有多个用户/组选择,则字段类型为SPFieldUserValueCollection。
我假设您的字段允许单个用户/组选择,并且您已经拥有以下对象:
SPSite site;
SPWeb web;
SPListItem item;
现在,我们将检查用户/组的字段值并检索用户列表,与其类型无关(字段的名称为“Users” )。
SPFieldUserValue usersField = new SPFieldUserValue(mainWeb, item["Users"].ToString());
bool isUser = SPUtility.IsLoginValid(site, usersField.User.LoginName);
List<SPUser> users = new List<SPUser>();
if (isUser)
{
// add a single user to the list
users.Add(usersField.User);
}
else
{
SPGroup group = web.Groups.GetByID(usersField.LookupId);
foreach (SPUser user in group.Users)
{
// add all the group users to the list
users.Add(user.User);
}
}
我希望它对你有所帮助。
韩国社交协会,
PedroJoséBatista
注意:SPUser对象也可以是AD组(也就是说,“DOMAIN \\ Domain Users”可能存在SPUser对象...这就是SPUser对象还包含属性IsDomainGroup的原因。
从这些信息中,您可以使用SPPrincipalInfo对象开始遍历AD组...但是它并不总是令人愉快。
值得注意的一件事是,SPGroup对象包含可以遍历AD组的ContainsCurrentUser属性......但是,假设您有一个可以使用的SPGroup对象。
请享用。
斯科特
最好使用web.SiteGroups
而不是web.Groups
作为一个组可能会被该站点继承。
private bool IsMember()
{
bool isMember;
SPSite site = new SPSite(SiteURL);
SPWeb web = site.OpenWeb();
isMember = web.IsCurrentUserMemberOfGroup(web.Groups["GroupName"].ID);
web.Close();
site.Close();
return isMember;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.