////// 列表项事件 /// public class EventReceiver2 : SPItemEventReceiver { ////// 已添加项. /// public override void ItemAdded(SPItemEventProperties properties) { base.ItemAdded(properties); SPSecurity.RunWithElevatedPrivileges(delegate() //用此方法模拟管理员账户运行此事件处理程序 { using (SPSite site = new SPSite(properties.SiteId)) //用此方法的话就不用dispose()了 { using (SPWeb web = site.OpenWeb(properties.OpenWeb().ID)) //注意获得web的方法!!! { try { this.EventFiringEnabled = false;// .DisableEventFiring(); //定义 查看权限 //SPRoleDefinition RoleDefReader = web.RoleDefinitions.GetByType(SPRoleType.Reader); //定义 参与讨论权限 SPRoleDefinition RoleDefContributor = web.RoleDefinitions.GetByType(SPRoleType.Contributor); //获取用户 SPUser user = properties.Web.CurrentUser;// web.CurrentUser; //SPUser user = web.EnsureUser("i:0#.f|clatticemembershipprovider|" + "1004355"); //定义 分配权限的对象 SPRoleAssignment RoleAssReader = new SPRoleAssignment((SPPrincipal)user); //给此对象绑定权限 RoleAssReader.RoleDefinitionBindings.Add(RoleDefContributor); //获取要赋予权限的列表项 SPList list = web.Lists[properties.ListId]; SPListItem item = list.GetItemById(Convert.ToInt32(properties.ListItemId)); //SPListItem item = properties.ListItem.ID; //清空所有权限 if (!item.HasUniqueRoleAssignments) item.BreakRoleInheritance(false); //将此条目取消权限继承,如果是“false”,则将去除所有权限,只保留系统账户,如果是“true”,则将上一级权限复制过来。 //给此列表项赋予新的权限 item.RoleAssignments.Add(RoleAssReader); //提交更改 item.Update(); this.EventFiringEnabled = true; } catch (Exception ex) { } } } }); } }