SharePoint 2007图文开发教程(5) 体验Event Handler
Event Handler
Event Handler是SharePoint中与文档库或列表相关联的事件处理程序,当我们对项目进行某些操作时,Event Handler就会截获这个事件,然后相应的进行操作。功能上比较像数据库中的触发器。比如:删除某个文件时向管理员发送一个邮件,添加一个列表时进行其他操作等等。
和2.0相比,WSS3.0对Event Handler提供了更强大的支持,如:列表,文档库,内容类型。并且支持同步和异步的操作等。
为SharePoint提供一个Event Handler并不是很费力,主要包括:开启Event Handler支持,编写Event Handler程序,向SharePoint中部署Event Handler。接下来逐一说明一下。
开启Event Handler支持
默认情况下是不开启Event Handler支持的,需要我们手动开启:进入应用程序管理---进入Web应用程序常规设置。

开启事件处理程序:

这样就完成了对Event Handler开启的支持。
编写Event Handler程序
SharePoint的Event Handler其实是一个类,这个类主要继承WSS中的SPWebEventReceiver,SPEmailEventReceiver,SPListEventReceiver,SPItemEventReceiver,IListEventSink等类,并且重写相应的方法来完成我们的需求。
这里做个简单的例子,当我们删除一个Items时,向日志文件中添加一条记录。
直接看代码:
C# Code复制内容到剪贴板
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.IO;
- using Microsoft.SharePoint;
- namespace EventHandlerText
- {
- public class ItemLogEvent : SPItemEventReceiver
- {
- /// <summary>
- /// 重写ItemDeleting,向日志文件写数据
- /// </summary>
- public override void ItemDeleting(SPItemEventProperties properties)
- {
- string path = @"c:\Log.txt";
- string text = "删除Item" + ":" + DateTime.Now.ToString();
- StreamWriter writer = new StreamWriter(path);
- writer.Write(text);
- writer.Close();
- }
- }
- }
是不是很简单,接下来我们按照为WebPart添加密钥文件的方法,为我们的Event Handler添加密钥文件,添加的目的我在部署的时候再说。这样,简单的Event Handler就完成了。
向SharePoint中部署Event Handler
和WebPart有所不同的是,Event Handler的dll需要放到GAC(Global Assembly Cache)中,而不能放在SharePoint网站的bin文件夹中,所以我们生成的dll必须进行强签名,这也就是上面为什么添加密钥文件的目的。
GAC的系统路径为:C:\WINDOWS\assembly,直接将生成的Event Handler dll拖入到这个路径中即可。

先来看下SharePoint中的情况:

在我们先前创建的网站中,我创建了一个文档库的List,并且上传了一个word文件,我们的Event Handler就是要添加到这里。
接下来就是将这个Event Handler部署到SharePoint中。可以通过代码的形式,也可以通过Feature的形式。这里介绍下代码的形式。
创建一个批处理程序(当然win程序也可以),添加如下代码:
- using System;
- using System.Collections.Generic;
- using System.Text;
- using Microsoft.SharePoint;
- namespace RegisterEvent
- {
- class Program
- {
- static void Main(string[] args)
- {
- try
- {
- SPSite site = new SPSite("http://gao:8000/sites/Brian_Publication/");//指定网站
- SPWeb web = site.OpenWeb();
- SPList list = web.Lists["文档库"];//指定List
- list.EventReceivers.Add(SPEventReceiverType.ItemDeleting, "EventHandlerText, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9d965453379ac249", "EventHandlerText.ItemLogEvent");//添加Event Handler
- Console.WriteLine("发布完成");
- Console.ReadLine();
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- Console.ReadLine();
- }
- }
- }
- }
代码很容易,想必大家一看就能明白,找到工程生成的可执行文件,运行:

这样就代表我们的Event Handler发布成功啦!至此,Event Handler的部署工作也就完成啦!
最后我们来测试下,进入文档库,删除那个“LINQ中文教程”word文件。到C:\下看下Log.txt:

OK,我们的Event Handler执行了,实现了我们想要的效果。
小结:有关Event Handler的内容就介绍到这里,相信大家认真的看一边就可以很轻松的掌握,当然有关Event Handler的内容还不止这些,需要在平时的应用中多多积累。
相关文章
SharePoint 2007图文开发教程(8) Excel Services扫盲
SharePoint 2007中,Excel Services是不得不提的,它是 Microsoft Office SharePoint Server 2007 中包含的一项新的服务器技术2015-12-29SharePoint 2007图文开发教程(7) 在SharePoint中实现Workflow
继续我们的SharePoint之旅,体验Workflow的应用,由于以前也很少弄WF,望有什么问题WF的高手多多指教2015-12-29SharePoint 2007图文开发教程(6) 实现Search Services
SharePoint中为我们提供了Search的功能,和Event Handler的实现比较类似,还是需要启动支持,定制服务,运行服务几部分内容,下面逐一说下2015-12-29SharePoint 2007图文开发教程(4) 实现高级的WebPart
前面的文章中,我们编写了一个非常简单的WebPart,只是在网页中输出一段字符串。在实际的应用中没有什么作用。此文和大家分享如何开发高级的WebPart,为控件添加事件,实现2015-12-29SharePoint 2007图文开发教程(3) 实现简单的WebPart
在前面的文章中,我们讲解了很多基础的内容,主要包括 安装配置、简单的创建网站等。相对来说比较简单。此文实现简单的WebPart,继续我们的SharePoint之旅2015-12-29SharePoint 2007图文开发教程(2) 使用SharePoint创建网站的步骤
上文简单介绍了有关SharePoint的安装,配置等内容的介绍。此文我们继续SharePoint之旅,通过SharePoint创建网站,需要的朋友可以参考下2015-12-29SharePoint 2007图文开发教程(1) 简介,安装,配置及创建Web应用程序
Microsoft Office SharePoint Server 2007 是一个服务器功能集成套件,它提供全面的内容管理和企业搜索、加速共享业务流程并便利跨界限信息共享以更好地了解业务,从而有助2015-12-29
SharePoint Designer 2007 官方简体中文版
Frontpage 2003的下一个版本,不过这个版本绝对不是Frontpage 2003的简单改进版,Microsoft Office SharePoint Designer 2007 是一种全新的Web2.0产品,用于基于 SharePoin2015-12-29
Microsoft Office SharePoint Server 2007 SDK软件开发工具包 简体中文
为了让解决方案提供商、独立软件供应商、增值经销商以及其他开发人员了解全新的 Office SharePoint Server 2007 企业应用程序和平台2015-03-25
亮剑.NET:SharePoint Server 2007开发实战 (张建义,王俞) pdf扫描版
本书共分为8章,详细讲解了sharepoint上常见的开发任务,讲述了各种开发场景下需要了解的知识,并提供了丰富的实例2013-10-27





最新评论