谁能告诉我如何使用共享点获取某个组内的用户?
所以我有一个包含用户和或组的列表。我想检索该列表中的所有用户。有没有办法区分列表项是组还是用户。如果它是一个组,我需要获取该组中的所有用户。
我正在使用 c#,并且我试图通过使其成为控制台应用程序来做精简。
我是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);
}
}
我希望它对你有帮助。
Tks,
佩德罗·何塞·巴蒂斯塔
注意: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;
}