在sharepoint中按组获取用户

时间:2008-11-28 03:07:10

标签: c# sharepoint moss console wss

任何人都可以告诉我如何使用sharepoint让用户进入某个群组吗?

所以我有一个包含用户和/或组的列表。我想检索该列表中的所有用户。有没有办法区分列表项是组还是用户。如果它是一个组,我需要获得该组内的所有用户。

即时通讯使用c#,我试图通过将其作为控制台应用程序来实现。

我是sharepoint的新手,我真的在这里跳进了游泳池的深处,任何帮助都会受到高度赞赏。

欢呼声..

4 个答案:

答案 0 :(得分:14)

您需要知道的第一件事是,当您有一个包含用户/组字段的列表时,您必须知道其类型。如果项目值中包含一个用户或组,则字段类型为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

答案 1 :(得分:5)

注意:SPUser对象也可以是AD组(也就是说,“DOMAIN \ Domain Users”可能存在SPUser对象...这就是SPUser对象也包含属性IsDomainGroup的原因。

根据这些信息,您可以使用SPPrincipalInfo对象开始遍历AD组...但是并不总是令人愉快。

值得记住的一件事是SPGroup对象包含可以遍历AD组的ContainsCurrentUser属性......但是假设您有一个可以使用的SPGroup对象。

享受。
斯科特

答案 2 :(得分:0)

最好使用web.SiteGroups代替web.Groups,因为该网站可能会继承该群组。

答案 3 :(得分:0)

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;
    }