sharepoint eventHandler 的基本操作

1)启动Event Handler支持。

首先打开SharePoint 3.0 Central Administration,打开Application Managerment治理页面,点击Web application settings,则进入Web Application Settings页面。在Web Application Settings页面中,找到Event Handlers项,并将其设置为On,然后单击Ok按钮保存设置。

2)EventHandler的实现:

a)在VS中创建类库里面的代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using System.IO;

namespace Czh.EventHandler.Demo
{
    public class EventHandlerDemo:SPItemEventReceiver
    {
        string url = "http://ds01:6020/";
        public override void ItemAdded(SPItemEventProperties properties)
        {
            SPListItem sPListItem = properties.ListItem;//获取添加信息
            //string title = sPListItem["Title"].ToString();
            string title = sPListItem.Title;
            string content=sPListItem["Content"].ToString();
            using (SPWeb sPWeb = new SPSite(url).OpenWeb())
            {
                sPWeb.AllowUnsafeUpdates = true;
                SPList sPList = sPWeb.Lists["EventHandlerBack"];//获取备份列表
                SPListItem item = sPList.Items.Add();
                item["Title"] = title;
                item["Content"] = content;
                try
                {
                    item.Update();
                }
                catch(Exception ex)
                {
                    WriteLog(ex.ToString());
                }
            }
        }
        public override void ItemDeleting(SPItemEventProperties properties)
        {
            SPListItem sPListItem = properties.ListItem;
            int id = sPListItem.ID;
            using (SPWeb sPWeb = new SPSite(url).OpenWeb())
            {
                sPWeb.AllowUnsafeUpdates = true;
                SPList sPList = sPWeb.Lists["EventHandlerBack"];
                sPList.Items.DeleteItemById(id);
                try
                {
                    sPList.Update();
                }
                catch (Exception ex)
                {
                    WriteLog(ex.ToString());
                }
            }
        }
        public override void  ItemUpdated(SPItemEventProperties properties)
        {
            SPListItem sPListItem = properties.ListItem;
            int id = sPListItem.ID;
            string title=sPListItem.Title;
            string content=sPListItem["Content"].ToString();
            using (SPWeb sPWeb = new SPSite(url).OpenWeb())
            {
                sPWeb.AllowUnsafeUpdates = true;
                SPList sPList = sPWeb.Lists["EventHandlerBack"];
                SPListItem item = sPList.GetItemById(id);
                item["Title"] = title;
                item["Content"] = content;
                try
                {
                    item.Update();
                }
                catch (Exception ex)
                {
                    WriteLog(ex.ToString());
                }
            }
        }
        private void WriteLog(string message)
        {
            string directoryPath = @"c:/logs";//目录路径
            string fileName = "EventHandlerDemo.log";//日志名
            string path = directoryPath + "//" + fileName;//日志路径
            //判断是否存在目录
            if (!Directory.Exists(directoryPath))//不存在目录
            {
                Directory.CreateDirectory(directoryPath);//创建目录
            }
            StreamWriter sw = new StreamWriter(path, true);
            sw.WriteLine("{0} {1}", System.DateTime.Now, message);
            sw.Close();
        }
    }
}

运行类库生成dll文件用软件reflector生成assName如Czh.EventHandler.Demo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ff95989902165f67,同时将dll文件放到C:/WINDOWS/assembly中。

b)部署EventHandler:

新建控制台应用程序代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;

namespace Deploy
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string url = "http://ds01:6020/";
                using (SPWeb sPWeb = new SPSite(url).OpenWeb())
                {
                    sPWeb.AllowUnsafeUpdates = true;
                    SPList sPList = sPWeb.Lists["EventHandlerDemo"];
                    string assName = "Czh.EventHandler.Demo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ff95989902165f67";
                    string className = "Czh.EventHandler.Demo.EventHandlerDemo";
                    sPList.EventReceivers.Add(SPEventReceiverType.ItemAdded, assName, className);
                    sPList.EventReceivers.Add(SPEventReceiverType.ItemDeleting, assName, className);
                    sPList.EventReceivers.Add(SPEventReceiverType.ItemUpdated, assName, className);
                }
                Console.WriteLine("部署成功!");
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Console.ReadLine();
            }
        }
    }
}

部署完EventHandler后重启iis(iisreset)。EventHandler部署完成。

c)回收EventHandler

新建控制台应用程序代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;

namespace CallBack
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "http://ds01:6020/";
            using (SPWeb sPWeb = new SPSite(url).OpenWeb())
            {
                SPList sPList = sPWeb.Lists["EventHandlerDemo"];
                Console.WriteLine("共有" + sPList.EventReceivers.Count + "个");
                if (sPList.EventReceivers.Count >= 1)
                {
                    for (int i = 0; i < sPList.EventReceivers.Count; i++)
                    {
                        sPList.EventReceivers[i].Delete();
                    }
                    Console.WriteLine("回收成功!");
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("已经为空!");
                    Console.ReadLine();
                }
            }
        }
    }
}
回收完EventHandler后重启iis(iisreset)。EventHandler回收完成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值