SharePoint 2007图文开发教程(5) 体验Event Handler
SharePoint 2007图文开发教程(5) 体验Event Handler
发布时间:2017-01-04 来源:查字典编辑
摘要:EventHandlerEventHandler是SharePoint中与文档库或列表相关联的事件处理程序,当我们对项目进行某些操作时,Ev...

SharePoint 2007图文开发教程(5) 体验Event Handler1

Event Handler

Event Handler是SharePoint中与文档库或列表相关联的事件处理程序,当我们对项目进行某些操作时,Event Handler就会截获这个事件,然后相应的进行操作。功能上比较像数据库中的触发器。比如:删除某个文件时向管理员发送一个邮件,添加一个列表时进行其他操作等等。

和2.0相比,WSS3.0对Event Handler提供了更强大的支持,如:列表,文档库,内容类型。并且支持同步和异步的操作等。

为SharePoint提供一个Event Handler并不是很费力,主要包括:开启Event Handler支持,编写Event Handler程序,向SharePoint中部署Event Handler。接下来逐一说明一下。

SharePoint 2007图文开发教程(5) 体验Event Handler1

开启Event Handler支持

默认情况下是不开启Event Handler支持的,需要我们手动开启:进入应用程序管理---进入Web应用程序常规设置。

SharePoint 2007图文开发教程(5) 体验Event Handler2

开启事件处理程序:

SharePoint 2007图文开发教程(5) 体验Event Handler3

这样就完成了对Event Handler开启的支持。

SharePoint 2007图文开发教程(5) 体验Event Handler1

编写Event Handler程序

SharePoint的Event Handler其实是一个类,这个类主要继承WSS中的SPWebEventReceiver,SPEmailEventReceiver,SPListEventReceiver,SPItemEventReceiver,IListEventSink等类,并且重写相应的方法来完成我们的需求。

这里做个简单的例子,当我们删除一个Items时,向日志文件中添加一条记录。

直接看代码:

C# Code复制内容到剪贴板

usingSystem; usingSystem.Collections.Generic; usingSystem.Text; usingSystem.IO; usingMicrosoft.SharePoint; namespaceEventHandlerText { publicclassItemLogEvent:SPItemEventReceiver { ///<summary> ///重写ItemDeleting,向日志文件写数据 ///</summary> publicoverridevoidItemDeleting(SPItemEventPropertiesproperties) { stringpath=@"c:Log.txt"; stringtext="删除Item"+":"+DateTime.Now.ToString(); StreamWriterwriter=newStreamWriter(path); writer.Write(text); writer.Close(); } } }

是不是很简单,接下来我们按照为WebPart添加密钥文件的方法,为我们的Event Handler添加密钥文件,添加的目的我在部署的时候再说。这样,简单的Event Handler就完成了。

SharePoint 2007图文开发教程(5) 体验Event Handler1

向SharePoint中部署Event Handler

和WebPart有所不同的是,Event Handler的dll需要放到GAC(Global Assembly Cache)中,而不能放在SharePoint网站的bin文件夹中,所以我们生成的dll必须进行强签名,这也就是上面为什么添加密钥文件的目的。

GAC的系统路径为:C:WINDOWSassembly,直接将生成的Event Handler dll拖入到这个路径中即可。

SharePoint 2007图文开发教程(5) 体验Event Handler4

先来看下SharePoint中的情况:

SharePoint 2007图文开发教程(5) 体验Event Handler5

在我们先前创建的网站中,我创建了一个文档库的List,并且上传了一个word文件,我们的Event Handler就是要添加到这里。

接下来就是将这个Event Handler部署到SharePoint中。可以通过代码的形式,也可以通过Feature的形式。这里介绍下代码的形式。

创建一个批处理程序(当然win程序也可以),添加如下代码:

C# Code复制内容到剪贴板 usingSystem; usingSystem.Collections.Generic; usingSystem.Text; usingMicrosoft.SharePoint; namespaceRegisterEvent { classProgram { staticvoidMain(string[]args) { try { SPSitesite=newSPSite("http://gao:8000/sites/Brian_Publication/");//指定网站 SPWebweb=site.OpenWeb(); SPListlist=web.Lists["文档库"];//指定List list.EventReceivers.Add(SPEventReceiverType.ItemDeleting,"EventHandlerText,Version=1.0.0.0,Culture=neutral,PublicKeyToken=9d965453379ac249","EventHandlerText.ItemLogEvent");//添加EventHandler Console.WriteLine("发布完成"); Console.ReadLine(); } catch(Exceptionex) { Console.WriteLine(ex.Message); Console.ReadLine(); } } } }

代码很容易,想必大家一看就能明白,找到工程生成的可执行文件,运行:

SharePoint 2007图文开发教程(5) 体验Event Handler6

这样就代表我们的Event Handler发布成功啦!至此,Event Handler的部署工作也就完成啦!

最后我们来测试下,进入文档库,删除那个“LINQ中文教程”word文件。到C:下看下Log.txt:

SharePoint 2007图文开发教程(5) 体验Event Handler7

OK,我们的Event Handler执行了,实现了我们想要的效果。

小结:有关Event Handler的内容就介绍到这里,相信大家认真的看一边就可以很轻松的掌握,当然有关Event Handler的内容还不止这些,需要在平时的应用中多多积累。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新编程开发学习
热门编程开发学习
软件教程子分类