How can I get a list of groups in a form or dialog box to select one or more groups, and then assign permissions to the document? Here in this code:
using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
namespace ItemAdded.EventReceiver1
{
/// <summary>
/// События элемента списка
/// </summary>
public class EventReceiver1 : SPItemEventReceiver
{
/// <summary>
/// Добавлен элемент.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
SPSite site = new SPSite(properties.WebUrl);
SPWeb web = site.OpenWeb();
SPDocumentLibrary docLib = (SPDocumentLibrary)web.Lists["Test_Doc_Lib"];
SPGroup oGroup = web.SiteGroups["Програмисты"];
var groups2 = new SPFieldUserValueCollection();
groups2.Add(new SPFieldUserValue(web, oGroup.ID, oGroup.Name));
SPUser currentUser = web.CurrentUser;
SPGroupCollection asd = currentUser.Groups;
var groups = new SPFieldUserValueCollection();
foreach (SPGroup group in asd)
{
//foreach (SPFieldUserValue group in groups)
groups.Add(new SPFieldUserValue(web, group.ID, group.Name));
}
EventFiringEnabled = false;
// properties.ListItem["ответственный"] = oGroup;
properties.ListItem["ответственный"] = groups + ";#" + groups2;
properties.ListItem.Update();
EventFiringEnabled = true;
var userValues = (SPFieldUserValueCollection)properties.ListItem["ответственный"];
foreach (SPFieldUserValue userValue in userValues)
{
var user = properties.Web.SiteGroups.GetByID(userValue.LookupId);
SetSPListItemUserPermissions(properties.ListItem, user, SPRoleType.Contributor);
}
}
public void SetSPListItemUserPermissions(SPListItem listItem, SPPrincipal Principal, SPRoleType roleType)
{
//Break role inheritance
if (!listItem.HasUniqueRoleAssignments)
listItem.ResetRoleInheritance();
EventFiringEnabled = false;
listItem.Update();
listItem.BreakRoleInheritance(false);
listItem.Update();
//Create new role
var roleDefinition = listItem.Web.RoleDefinitions.GetByType(roleType);
var roleAssignment = new SPRoleAssignment(Principal);
roleAssignment.RoleDefinitionBindings.Add(roleDefinition);
//Assign new role
listItem.RoleAssignments.Add(roleAssignment);
listItem.Update();
EventFiringEnabled = true;
}
}
}