JOJ
踏踏实实做人,认认真真做事!放纵自己就是毁灭自己!

Sharepoint中的事件处理就是 EventHandler,我知道有这个东西!但是自己一直没有亲手做过一次! 今天按照步骤一步步做一遍,全当笔记记录吧! 学习Sharepoint知识,基本上都是来自于 杨永刚先生的<<Microsoft Office SharePoint Server 2007>>案例实战开发和张建义写的<<亮剑.net sharepoint 开发实践>>! 所以下面的东西基本上都是来源以上书中内容.

  1. 配置EventHandler
    1. 打开SP管理中心,依次点击:应用程序管理(Application Management)-->web应用程序常规设置(Web application general settings)
    2. 打开web应用程序常规设置页面: Web Application [如:http://localhost:5000]:设置为要开启的web app地址,如果你不注意这里,你有可能开启了其他站点的EventHandler![哈哈,我以前经常遇到] ,设置向后兼容的事件处理(Backward-Compatible Event Handlers ) 为on
  2. 打开刚才设置的Web Application [http://localhost:5000]地址,新建一个文档库[KB],点击KB-->设置-->高级设置:发现多了一项:向后兼容的事件处理程序。根据输入框,需要我们提供 程序集,类3

  3. 开发EventHandler最好安装WSS Extensions!  新建工程:MyEventHandlerStudy,新建EventHandler_DocLibrary类并继承IListEventSink接口 贴代码吧.

    1. using System.IO;
      using Microsoft.SharePoint;
      
      namespace MyEventHandlerStudy
      {
          /// <summary>
          /// 需要继承:IListEventSink
          /// </summary>
          public class EventHandler_DocLibrary:IListEventSink
          {
      
              #region IListEventSink Members
      
              public void OnEvent(SPListEvent listEvent)
              {
                  ///事件类型 []
                  if (listEvent.Type == SPListEventType.Insert)
                  {
                      string path = @"c:\test.log";
                      string content =@"用户“"+ listEvent.UserDisplayName + "”在" + listEvent.Title + "文档库里面新增了一个文件\r\n";
                      System.Collections.Hashtable ht = listEvent.PropertiesBefore;
                      foreach (string key in ht.Keys)
                      {
                          content += key + "=" + ht[key] + "\r\n";
                      }
                      using (StreamWriter sw = new StreamWriter(path, true))
                      {
                          sw.Write(content);
                      }
                  }else if(listEvent.Type == SPListEventType.Delete){
                      string path = @"c:\test.log";
                      string content = @"用户“"+ listEvent.UserDisplayName + "“删除了一个文件!\r\n";
                      System.Collections.Hashtable htafter = listEvent.PropertiesAfter;
                      foreach (string key in htafter.Keys)
                      {
                          content += key + "=" + htafter[key] + "\r\n";
                      }
                      using (StreamWriter sw = new StreamWriter(path, true))
                      {
                          sw.Write(content);
                      }
              }
      
              #endregion
          }
      }
      

 

把该工程强签名(项目属性--签名),并把生成路径改为站点下面的bin路径(属性—>build—>output path)! 生成项目!用Reflector.exe 打开程序集! 把程序集内容输入到上面截图的文本框里面即可!

如:Assembly Name:MyEventHandlerStudy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c19bb35f3531b88e

Class Name:MyEventHandlerStudy.EventHandler_DocLibrary

  

现在就去KB文档库里面上传一个文件吧!哈哈去C盘看看text.log里面的东西吧!OH,你成功了![反正我是操作成功了,Good Luck]

  

MOSS开发培训-Event Handler开发.pdf

 

Technorati 标签: sharepoint,EventHandler

 

posted on 2010-05-06 14:28  JoinJ  阅读(698)  评论(0编辑  收藏  举报