10

sharepoint を使用して特定のグループ内のユーザーを取得する方法を教えてもらえますか?

だから私はユーザーやグループを含むリストを持っています。そのリスト内のすべてのユーザーを取得したい。リスト項目がグループかユーザーかを区別する方法はありますか? グループの場合、そのグループ内のすべてのユーザーを取得する必要があります。

私はC#を使用しており、コンソールアプリケーションにすることで薄いことをしようとしています。

私はsharepointを初めて使用し、ここでプールの奥深くに飛び込んでいます。どんな助けでも大歓迎です。

乾杯..

4

4 に答える 4

14

最初に知っておくべきことは、ユーザー/グループ フィールドを持つリストがある場合、そのタイプを認識している必要があるということです。項目値内にユーザーまたはグループが 1 つある場合、フィールド タイプは 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、
ペドロ・ホセ・バティスタ

于 2008-11-28T16:56:13.123 に答える
5

注:SPUserオブジェクトはADグループにすることもできます(つまり、「DOMAIN \ DomainUsers」のSPUserオブジェクトが存在する可能性があります...そのため、SPUserオブジェクトにはプロパティIsDomainGroupも含まれています。

この情報から、SPPrincipalInfoオブジェクトを使用してADグループのトラバースを開始できます...ただし、常に快適であるとは限りません。

覚えておく価値のあることの1つは、SPGroupオブジェクトにADグループをトラバースできるContainsCurrentUserプロパティが含まれていることです...ただし、これは、作業するSPGroupオブジェクトがあることを前提としています。

楽しみ。
-スコット

于 2009-11-05T13:59:29.957 に答える
0

これは、グループがそのサイトに継承される可能性があるため、web.SiteGroups代わりに使用することをお勧めします。web.Groups

于 2011-03-11T14:10:15.957 に答える
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;
    }
于 2011-08-02T08:28:06.973 に答える