Я пытаюсь создать новую группу SharePoint программно (используя.Net), для этого я использую следующий код С#
//greate group with no users:
web.SiteGroups.Add(groupName, groupOwner, null, description);
//Parameters are defined earlier in the code such as:
// string groupName
// SPUser groupOwner
// string description
web.Update();
SPGroup newGroup = web.Groups.GetByName(groupName);
Создание работает хорошо, но когда я пытаюсь получить доступ к группе, возникает исключение, говорящее, что "Группа не может быть найдена". В чем причина того, что группа не может быть найдена и как я могу ее исправить (мне нужно получить доступ к группе для моего дальнейшего кода)? Если я проверяю SharePoint под людьми и группами, то группа существует.
Любая помощь приветствуется, спасибо.
Попробуйте это: SPGroup oGroup = web.SiteGroups [groupName];
Я думаю, что код Aanchal выдаст исключение, если группа не существует.
Проверьте этот фрагмент кода. Это работало отлично для меня, чтобы проверить, существует ли группа:
string nameOfGroupToCheck = "Test Group";
if (spWeb.Groups.OfType<SPGroup>().Where(g => g.Name == nameOfGroupToCheck).Count() > 0)
{
...
}
Чтобы этот код работал правильно, вам нужно добавить пространство имен System.Linq
в свой код:
using System.Linq;
По какой причине группу не найти
Это происходит потому, что свойство Groups
содержит только группы, которым вы предоставили какие-либо разрешения в web
области.
Как я могу это исправить
Вы должны использовать SiteGroups
вместо этого. Это свойство содержит все группы, добавленные в коллекцию web
находится ваш web
. Кроме того, ваша недавно созданная группа.
Ваш код должен быть в порядке с GetByName
, но GetByName
, что если вы используете его где-то еще, вы не уверены, что группа существует, она может вызвать исключение, если группа не существует.
Если вам это нужно и вы не хотите добавлять предложение try/catch и не использовать System.Linq
, вы можете сделать что-то вроде:
SPGroupCollection groups = web.SiteGroups.GetCollection(new string[] { groupName });
SPGroup myGroup = groups.Count == 0 ? null : groups[0];
if (myGroup != null)
{
// ...
}