любой способ получить группы sharepoint с заданным URL сайта - PullRequest
0 голосов
/ 18 мая 2010

Я застреваю. Предположим, я создаю 5 сайтов. Для каждого я создаю несколько групп sharepoint. Итак, я создаю выпадающий список для привязки 5 сайтов, и когда я нажимаю на любой сайт, я получаю группы sharepoint, созданные на нем. Но я всегда вижу, что выпадающий список, используемый для связывания этих групп, никогда не меняется. Я имею в виду, что он всегда связывает только несколько групп по умолчанию в sahrepoint. Новых созданных групп нет.

И у меня такая путаница

web.AssociatedGroups web.Groups web.SiteGroups

какой мы будем использовать этот случай? Пожалуйста, ведите меня

Вот мой фрагмент кода

private void BindSPGroupsToDropDownList (DropDownList ddl, строка siteUrl) {

        ddl.Items.Clear();
        try
        {
            SPSecurity.RunWithElevatedPrivileges(delegate()
           {
               using (SPSite site = new SPSite(siteUrl))
               {
                   using (SPWeb web = site.OpenWeb())
                   {
                       //web.SiteGroups
                       foreach (SPGroup spGroup in web.Groups)
                       {


                           ddl.Items.Add(new ListItem(spGroup.Name.Trim(), spGroup.ID.ToString()));



                       }

                   }
               }
           });
        }

}

спасибо заранее

1 Ответ

1 голос
/ 18 мая 2010

Вы не показываете, как вы добавляете группы, поэтому трудно понять, почему вы не можете их перечислить.

Некоторые соображения:

  1. группы ограничены на уровне семейства сайтов, то есть нет понятия групп на уровне сети (SPWeb); только на уровне SPSite
  2. Я написал код пару лет назад для управления группами, поэтому я не помню разницу между различными свойствами. Глядя на мой код, я использовал SPWeb.SiteGroups, чтобы проверить, существует ли группа, и добавить новую группу.

Вот мой - слегка анонимный - код:

public static void CreateSiteGroup(SPSite site, string strGroupName, string strGroupDesc, string strGroupOwner) {
    if (site == null) {
        string message = GetMessagePrefix() + " Site is null";
        XxxLog.Error(XxLogEventId.Common, message, XxxLogCategory.CommonBusiness);
     } else if (String.IsNullOrEmpty(strGroupName)) {
        string message = GetMessagePrefix() + " The group name is empty";
        XxxLog.Error(XxxLogEventId.Common, message, XxxLogCategory.CommonBusiness);
     } else {
        try {
            using (SPWeb rootWeb = site.RootWeb) {
                SPMember owner;
                if (String.IsNullOrEmpty(strGroupOwner)) {
                    owner = rootWeb.CurrentUser;
                } else {
                    if (!ContainsGroup(site, strGroupOwner)) {
                        string message = GetMessagePrefix() + " Can not find owner group name: " + strGroupOwner;
                        XxxLog.Error(XxxLogEventId.Common, message, XxxLogCategory.CommonBusiness);
                        return;
                    } else {
                        owner = rootWeb.SiteGroups[strGroupOwner];
                    }
                }

                if (!ContainsGroup(site, strGroupName)) {
                    rootWeb.SiteGroups.Add(strGroupName,
                                           owner,
                                           null, // no default user
                                           strGroupDesc);
                } else {
                    string message = GetMessagePrefix() + " The group " + strGroupName + " was already present";
                    XxxLog.Info(message, XxxLogCategory.CommonBusiness);
                }
            }
        } catch (Exception e) {
           string message = GetMessagePrefix() + " Cannot create " + strGroupName + " group";
           XxxLog.Error(XxxLogEventId.Common, message,e, XxxLogCategory.CommonBusiness);
        }
     }
  }

  public static Boolean ContainsGroup(SPSite site, string name) {
     SPGroup group = null;
     using (SPWeb rootWeb = site.RootWeb) {
        foreach (SPGroup g in rootWeb.SiteGroups) {
           if (g.Name.ToUpper().Equals(name.ToUpper())) {
              group = g;
              break;
           }
        }
     }

     return (group != null);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...