设为首页 收藏本站
查看: 1065|回复: 0

[经验分享] SharePoint 2007图文开发教程(5)---体验Event Handler

[复制链接]

尚未签到

发表于 2015-9-24 10:34:31 | 显示全部楼层 |阅读模式
  前面两篇文章介绍了有关WebPart的相关内容,此文继续SharePoint之旅,体验下Event Handler的相关内容。
DSC0000.gif 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应用程序常规设置。
DSC0001.jpg
  开启事件处理程序:
DSC0002.jpg
  这样就完成了对Event Handler开启的支持。
编写Event Handler程序
  SharePoint的Event Handler其实是一个类,这个类主要继承WSS中的SPWebEventReceiverSPEmailEventReceiverSPListEventReceiverSPItemEventReceiver,IListEventSink等类,并且重写相应的方法来完成我们的需求。
  这里做个简单的例子,当我们删除一个Items时,向日志文件中添加一条记录。
  直接看代码:

DSC0003.gif DSC0004.gif 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拖入到这个路径中即可。
DSC0005.jpg
  先来看下SharePoint中的情况:
DSC0006.jpg
  在我们先前创建的网站中,我创建了一个文档库的List,并且上传了一个word文件,我们的Event Handler就是要添加到这里。
  接下来就是将这个Event Handler部署到SharePoint中。可以通过代码的形式,也可以通过Feature的形式。这里介绍下代码的形式。
  创建一个批处理程序(当然win程序也可以),添加如下代码:

Code
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();
            }
           
        }
    }
}
  代码很容易,想必大家一看就能明白,找到工程生成的可执行文件,运行:
DSC0007.jpg
  这样就代表我们的Event Handler发布成功啦!至此,Event Handler的部署工作也就完成啦!
  最后我们来测试下,进入文档库,删除那个&#8220;LINQ中文教程&#8221;word文件。到C:\下看下Log.txt:
DSC0008.jpg
  OK,我们的Event Handler执行了,实现了我们想要的效果。
  
  小结:有关Event Handler的内容就介绍到这里,相信大家认真的看一边就可以很轻松的掌握,当然有关Event Handler的内容还不止这些,需要在平时的应用中多多积累。
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-118098-1-1.html 上篇帖子: SharePoint 2007图文开发教程(6)---实现Search Services 下篇帖子: 无废话SharePoint入门教程五[创建SharePoint页面布局]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表