SharePoint中添加或者修改Item时调用EventReceiver(Event Handler)处理额外的逻辑。取名:EricSunArticlesListItemEventReceiver

Elements.xml

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"><Receivers ListTemplateId="10000"><Receiver><Name>EricSunArticlesListItemEventReceiverItemAdding</Name><Type>ItemAdding</Type><Assembly>$SharePoint.Project.AssemblyFullName$</Assembly><Class>EricSunSharePointProject.ListInstances.EricSunArticlesListItemEventReceiver.EricSunArticlesListItemEventReceiver</Class><SequenceNumber>10000</SequenceNumber></Receiver><Receiver><Name>EricSunArticlesListItemEventReceiverItemUpdating</Name><Type>ItemUpdated</Type><Assembly>$SharePoint.Project.AssemblyFullName$</Assembly><Class>EricSunSharePointProject.ListInstances.EricSunArticlesListItemEventReceiver.EricSunArticlesListItemEventReceiver</Class><SequenceNumber>10000</SequenceNumber></Receiver></Receivers>
</Elements>

EricSunArticlesListItemEventReceiver.cs

using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
using System.Text.RegularExpressions;namespace EricSunSharePointProject.ListInstances.EricSunArticlesListItemEventReceiver
{/// <summary>/// List Item Events/// </summary>public class EricSunArticlesListItemEventReceiver : SPItemEventReceiver{/// <summary>/// An item is being added./// </summary>public override void ItemAdding(SPItemEventProperties properties){try{if (IsTargetContentType(properties.List)){SPListItem listItem = properties.ListItem;InitAttachmentString(listItem, "EricSunArticleAttachments");InitCategoryString(listItem, "EricSunCategories", "EricSunCategoryString");}}catch (SPException ex){}}/// <summary>/// An item is being updated./// </summary>public override void ItemUpdated(SPItemEventProperties properties){try{if (IsTargetContentType(properties.List)){SPListItem listItem = properties.ListItem;InitAttachmentString(listItem, "EricSunArticleAttachments");InitCategoryString(listItem, "EricSunCategories", "EricSunCategoryString");}}catch (SPException ex){}}/// <summary>/// Judge target content type./// </summary>private bool IsTargetContentType(SPList List){bool isTargetContentType = false;if (List == null){throw new ArgumentNullException("List is null.");}SPContentTypeCollection contentTypeCollection = List.ContentTypes;foreach (SPContentType contentType in contentTypeCollection){if (contentType.Name.Equals("EricSunArticleContentType", StringComparison.Ordinal)){isTargetContentType = true;break;}}return isTargetContentType;}/// <summary>/// Initial category string from category lookup./// </summary>private void InitCategoryString(SPListItem listItem, string fromField, string toField){if (listItem == null){throw new ArgumentNullException("List item is null.");}if (listItem[fromField] == null){throw new ArgumentNullException("List field is null.");}SPFieldLookupValue categoryLookup = new SPFieldLookupValue(listItem[fromField].ToString());string[] choices = Regex.Split(categoryLookup.ToString(), ";#");string categories = string.Empty;for (int i = 1; i < choices.Length; i += 2){categories += choices[i] + ";";}listItem[toField] = categories;listItem.Update();}/// <summary>/// Initial attachment string when add attachment to item/// </summary>private void InitAttachmentString(SPListItem listItem, string toField){if (listItem == null){throw new ArgumentNullException("List item is null.");}SPAttachmentCollection attachments = listItem.Attachments;string attachmentList = string.Empty;foreach (string attachment in attachments){string name = attachment;string url = SPUrlUtility.CombineUrl(attachments.UrlPrefix, attachment);attachmentList += name + "," + url + ";";}listItem[toField] = attachmentList;listItem.Update();}}
}

http://msdn.microsoft.com/en-us/library/gg252010(v=office.14).aspx

转载于:https://www.cnblogs.com/mingmingruyuedlut/archive/2013/03/04/2913891.html

SharePoint中添加或者修改Item时调用EventReceiver(Event Handler)处理额外的逻辑相关推荐

  1. iOS运行时-使用Runtime向Category中添加属性以及运行时介绍

    前言 了解OC的都应该知道,在一般情况下,我们是不能向Category中添加属性的,只能添加方法,但有些情况向,我们确实需要向Category中添加属性,而且很多系统的API也有一些在Category ...

  2. 如何管理和记录 SSIS 各个 Task 的开始执行时间和结束时间以及 Task 中添加|删除|修改的记录数...

    开篇语 在这篇日志中 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架 我介绍到了包级别的日志管理框架,那么这个主要是针对包这一个层级的 Log 信息,包括包开始执行和结束时间,以 ...

  3. 在sharepoint中添加视频播放

    年初的时候想把公司举办的春晚发布在sharepoint中供大家观看,但是视频文件太大了,放到文档库中存储到数据库中是一个不切实际的办法,后来就搁置了. 其实也一直在想优酷等视频网站的发布方式,但没能得 ...

  4. Repeater控件中添加删除修改按钮

    1: <asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%#Eva ...

  5. Linux中添加、修改、删除用户和用户组

    一.用户: 在创建用户时,需要为新建用户指定一用户组,如果不指定其用户所属的工作组,自动会生成一个与用户名同名的工作组.创建用户user1的时候指定其所属工作组users,例:useradd –g u ...

  6. sharepoint中显示网页库item的webpart和显示列表库item的webpart

    首先是在任意位置显示网页库中网页的ITEM的webpart 公司动态和公司公告列表Page在只显示Title的情况先查询出来的栏 Title _ModerationStatus(审批状态) ID Fi ...

  7. UE4射击游戏中添加瞄准到敌人时准星变红的效果

    主要思路是,建立一个接口Unreal Interface,对需要检测的敌人添加这个接口,当射线检测Result对象继承了该接口时,就让HUD中的准星颜色变红. 首先新建一个Unreal Interfa ...

  8. MySQL存个人信息可以吗_mysql数据库中,在修改数据时能否保存操作人员的信息,比如姓名或id,如果能,怎么操作。...

    满意答案 yuliuyifei 2015.04.15 采纳率:50%    等级:8 已帮助:464人 您好,"用mysql作为数据库开发" 在数据枝姿访问这一层,必须是mysql ...

  9. 如何向本地MSDN帮助库中添加和修改一些帮助内容

    打开本地的MSDN, 在索引(Index)窗口中,筛选依据选择"未筛选"(unfiltered), 查找(Look for)文本框中输入"集合管理器"(Coll ...

最新文章

  1. php不重复随机加时间毫秒,PHP实现的毫秒定时器,同时解决进程不重复堆积
  2. 【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )
  3. DataTable 的 JSON 序列化
  4. 在ASP.NET MVC 模型中 选择最好的方法将多个model(数据模型)传递到视图
  5. 文巾解题 1179. 重新格式化部门表
  6. Vue.js(一) Vue.js + element-ui 扫盲
  7. 你可能没注意的CSS单位
  8. 方差 标准差_方差与标准差——杭州市初中数学核心组寒假微课学习八年级第38课...
  9. 【算法】一个简单的随机森林(RF)原理
  10. python import出错_Python ImportError: cannot import name urlopen错误分析
  11. 图像文字识别(二):java调用tesseract 识别图片文字
  12. linux下sendmail邮件系统安装操作记录
  13. ruby 查看csv文件_如何使用CSV和Ruby构建终端游戏
  14. PHP微信公众平台源码 支持多账号 仿pigcms 小猪微信 已经修改完毕 完整可用
  15. 计算机类和数学与应用数学哪个好,数学与应用数学专业怎么样 好不好找工作...
  16. Unity中uGUI的控件事件穿透逻辑
  17. 使用Julia进行图像处理--JuliaImages介绍与基础使用
  18. 服务器数据恢复的两种方法
  19. gps+wifi+mobile 5的手机参数对比
  20. BUCT数据结构——图(拓扑排序、关键路径)

热门文章

  1. Java 多线程(二)—— 线程的同步
  2. final/finalize/finally的区别
  3. Aqua Data Studio数据库连接工具解决Sybase中文乱码问题
  4. KMP算法的一个C++实现
  5. SCVMM2012 SP1 之P2V转换
  6. drupalchina--如何翻译及如何上传翻译的内容?
  7. python深浅拷贝 面试_[面试题二]百度资深面试官:python赋值、浅拷贝与深拷贝
  8. div默认外边距是多少_CSS 外边距
  9. linux cat 递归目录,黑猴子的家:Linux 文件目录命令
  10. 如何将本地MySQL提交到网络_如何把本地MySql数据库移植到远程服务器上