记录一下如何在sharepoint server 2013自定义列表中,使用eventhandle控制自定义列表custom list的条目item权限。

///<summary>

///正在添加项.

///</summary>

public override void ItemAdding(SPItemEventProperties properties)

{

base.ItemAdding(properties);

SPSecurity.RunWithElevatedPrivileges(delegate()

{

if(properties.ListTitle =="工作日报")

{

string DepartmentName ="";

if(properties.AfterProperties["Department"] !=null)

{

DepartmentName =properties.AfterProperties["Department"].ToString();

}

if (DepartmentName =="IT部门")

{

properties.ErrorMessage="该部门暂时不能填写日报!";

properties.Cancel =true;

}

}

});

}

///<summary>

///已添加项.

///</summary>

public override void ItemAdded(SPItemEventProperties properties)

{

base.ItemAdded(properties);

SPSecurity.RunWithElevatedPrivileges(delegate()

{

if(properties.ListTitle =="工作日报")

{

SPSite site=newSPSite(properties.SiteId);

SPWeb web=site.OpenWeb();

web.AllowUnsafeUpdates = true;

SPList list =web.Lists[properties.ListId];

SPListItem item =list.GetItemById(properties.ListItemId);

//权限断开,并且移除掉其它权限

if(!item.HasUniqueRoleAssignments)

{

item.BreakRoleInheritance(false);

}

//添加用户权限

SPUser CurrentUser =web.EnsureUser(properties.UserLoginName);

SPRoleAssignment MyRoleAssignment =newSPRoleAssignment(CurrentUser);

MyRoleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Contributor));

item.RoleAssignments.Add(MyRoleAssignment);

//添加上级领导权限

//1.根据当前用户,获取到该用户的上级领导

SPList EmployRelationList= web.Lists["员工关系表"];

SPQuery query =newSPQuery();

query.Query = @"<Where><Eq><FieldRefName=""EmployeeId"" LookupId=""TRUE""/><Value Type=""User"">" +properties.CurrentUserId +"</Value></Eq></Where>";

SPListItemCollection sic =EmployRelationList.GetItems(query);

DataTable dt =sic.GetDataTable();

string LeaderUserId =string.Empty;

if (dt !=null &&dt.Rows.Count > 0)

{

LeaderUserId = dt.Rows[0]["Leader"].ToString();

}

//2.将当前上级领导添加到该项目权限中

if (LeaderUserId !=null &&LeaderUserId!="")

{

SPUser LeaderUser =web.EnsureUser(LeaderUserId);

MyRoleAssignment =newSPRoleAssignment(LeaderUser);

MyRoleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Reader));

item.RoleAssignments.Add(MyRoleAssignment);

}

item.Update();

web.Dispose();

}

});

}

转载于:https://www.cnblogs.com/jiangu66/p/3184482.html

sharepoint 2013 自定义列表eventhandle权限控制相关推荐

  1. SharePoint 2013 自定义扩展菜单

    在对SharePoint进行开发或者功能扩展的时候,经常需要对一些默认的菜单进行扩展,以使我们开发的东西更适合SharePoint本身的样式.SharePoint的各种功能菜单,像网站设置.Ribbo ...

  2. 关于SharePoint中管理列表项权限

    现况概述在SharePoint中对于列表的权限默认是只可以控制到列表级别,而对于列表下面的列表项,在SharePoint中是无法进行控制的. 需求概述现在我参与的项目中需要控制一个文档库中的文档.让这 ...

  3. SharePoint 2013 自定义扩展菜单(二)

    转载自:http://www.cnblogs.com/jianyus/p/3376075.html 包含另外三个例子,列表设置.管理中心.人员和组添加菜单 接博文<SharePoint 2013 ...

  4. 【FBA】SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用...

    //http://www.cnblogs.com/OceanEyes/p/custom-provider-in-sharepoint-2013-fba-authentication.html 由于项目 ...

  5. sharepoint 2013 文档库eventhandle权限控制

    记录一下如何在sharepoint server 2013文档库中,使用eventhandle控制文档库document library的条目item权限. ///<summary> // ...

  6. 自定义广播增加权限控制

    发送广播: Intent intent = new Intent("com.rscja.cq");sendBroadcast(intent); AndroidManifest.xm ...

  7. sharepoint 2016 学习系列篇(15)-自定义列表应用篇-(4)数据权限配置

    当数据已经录入到列表中之后,接下来,朋友们可能会想知道,有些数据,只想给某些用户看到,或者编辑,列表是否支持这样的操作. 大微软的sharepoint平台,对于用户的需求,可以说是考虑得很周全的,权限 ...

  8. SharePoint 2013 基于表单 Membership 的身份验证

    其实关于SharePoint 2013 表单身份验证网上已经有很多了,比如 SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authenticati ...

  9. SharePoint 2013 入门教程--系列文章

    转:http://www.cnblogs.com/jianyus/p/3381415.html 以下文章是自己在学习SharePoint的过程中,不断积累和总结的博文,现在总结一个目录,分享给大家.这 ...

最新文章

  1. (八)Eclipse创建Maven项目运行mvn命令
  2. 游戏计算机性能要求,游戏主机只能玩游戏?只要性能够强悍,什么需求都能满足!...
  3. 利用多项式特征生成与递归特征消除解决特征组合与特征选择问题
  4. 微信小程序 引用 map 地图,显示当前位置
  5. GOF23种设计模式
  6. js 内置对象的方法
  7. JSK-387 求偶数和【入门】
  8. linux挂载安卓手机命令,Android开发中,mount指令的各种用法大全,挂载设备的各种配置...
  9. oracle快速解析,教你用Oracle解析函数快速检查序列间隙
  10. php tcp获取数据_php建立tcp服务请求数据双向通信问题
  11. [转]DSP2812 代码段(.text段)太长的解决办法——通过cmd文件拆分.text段
  12. 【C++STL库】stack常用函数学习
  13. jflash添加芯片_工欲善其事,必先利其器:动手给JLink添加官方不支持的芯片
  14. Word章节自动编号+公式编号
  15. 【代码】网易云音乐(周杰伦-晴天)评论的爬取
  16. linux删除指定的行
  17. 【Scala】Scala 部署和安装
  18. win10系统开机总是弹出BitLocker输入恢复密钥如何解决
  19. windows用ipconfig查看或刷新ip和dns
  20. Jira - JIRA-Bootstrap ERROR

热门文章

  1. 使用JAVA数组实现顺序表
  2. android 仿京东toolbar,仿京东商城系列2------自定义toolbar
  3. 使用Ubuntu挂载NTFS格式分区
  4. Docker容器制作
  5. C++ memcpy和memmove实现
  6. linux用户层驱动--VFIO(四)
  7. android工程师 腾讯,腾讯音乐Android工程师一面面试题记录,拿走不谢!
  8. java web插件_javaweb项目插件实现机制
  9. GoWorld – 用Golang写一个分布式可扩展、可热更的游戏服务器
  10. tensorflow model save and restore