我正在尝试以编程方式创建一个新的SharePoint组(使用.Net),为此我使用以下C#代码
//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);
创建效果很好,但是当我尝试访问该组时,会抛出异常,说“#34;无法找到组。”#34; 无法找到该组的原因是什么以及如何解决此问题(我需要访问该组以获取更多代码)?如果我在“人员和组”下检查SharePoint,则该组就在那里。
感谢任何帮助,谢谢。
答案 0 :(得分:3)
试试这个:SPGroup oGroup = web.SiteGroups [groupName];
答案 1 :(得分:2)
我认为,如果该组不存在,Aanchal的代码将抛出异常。
请检查此代码段。我可以检查是否存在一个组:
function shutd()
{
echo "mySuperSecurePassword" | sudo -S shutdown -h now
}
要使此代码正常工作,您需要在代码中添加string nameOfGroupToCheck = "Test Group";
if (spWeb.Groups.OfType<SPGroup>().Where(g => g.Name == nameOfGroupToCheck).Count() > 0)
{
...
}
命名空间:
System.Linq
答案 2 :(得分:0)
找不到该群组的原因是什么
之所以会这样,是因为Groups
属性仅包含您在web
范围内授予了任何类型的权限的组。
我该如何解决
您应该改用SiteGroups
。此属性包含添加到web
所在的网站集中的所有组。还有,您新创建的组。
您的代码应该与GetByName
相同,但要警告,如果您在其他地方使用它,则不确定该组是否存在,如果该组不存在,则会引发异常。
如果您需要这样做,并且不想添加try / catch子句,也不要使用System.Linq
,则可以执行以下操作:
SPGroupCollection groups = web.SiteGroups.GetCollection(new string[] { groupName });
SPGroup myGroup = groups.Count == 0 ? null : groups[0];
if (myGroup != null)
{
// ...
}