Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8351022
  • 博文数量: 444
  • 博客积分: 10593
  • 博客等级: 上将
  • 技术积分: 3852
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-09 15:26
文章分类

全部博文(444)

文章存档

2014年(1)

2013年(10)

2012年(18)

2011年(35)

2010年(125)

2009年(108)

2008年(52)

2007年(72)

2006年(23)

分类: 系统运维

2009-07-22 15:48:56

1.     什么是List Event Receivers

Event Receivers其实是一个.Net Framework的类,用来实现某些功能.它必须得安装在GAC里面,然后被SharePoint实例化并引用。

2.     创建一个Event Receivers的四个步骤:

a)       创建一个继承自SPListEventReceiverSPItemEventReceiver的类。

b)      给这个类创建一个强名称。

c)       将这个类布置到GAC

d)      通过Feature, content type或者写代码来布置这个类。

3.     以下是逐步创建一个List Event Receivers的具体过程. 这个类要实现的功能是,当更改List里的内容时,往日志中写入一条记录.创建一个类,添加对Microsoft.SharePoint.dll的引用,然后书写代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using Microsoft.SharePoint;

 

namespace EventLogger

{

    public class ListEventLogger:SPItemEventReceiver

    {

        public override void ItemAdded(SPItemEventProperties properties)

        {

            WriteTextToLog(string.Format("{0} item added:{1}",properties.ListItem.Name.ToString(),DateTime.Now.ToString()));

        }

        public override void ItemDeleted(SPItemEventProperties properties)

        {

            WriteTextToLog(string.Format("{0} item deleted:{1}", properties.ListItem.Name.ToString(), DateTime.Now.ToString()));

        }

        public override void ItemUpdated(SPItemEventProperties properties)

        {

            WriteTextToLog(string.Format("{0} item updated:{1}", properties.ListItem.Name.ToString(), DateTime.Now.ToString()));

 

        }

 

        private void WriteTextToLog(string text)

        {

            StreamWriter logFile = File.AppendText(@"c:\log.txt");

            logFile.Write(text + "\n");

            logFile.Close();

        }

    }

}

4.     给这个类添加强名称,然后将生成的dll文件拖到C:\WINDOWS\assembly文件夹下面.

前文说到已经将类写好并放到GAC里面了,本文将接着介绍如何布置List Event Receivers.

布置List Event Receivers有三种方法,分别是:

1.     通过编程的方式布置

2.     通过Feature来布置

3.     通过Content Types来布置

一、     通过编程的方式来布置(假设站点下有一个ListMyList)

建立一个控制台应用程序,添加对Microsfot.SharePoint.dll的引用,然后添加代码如下:

static void Main(string[] args)

{

string siteUrl = "Http://你的站点地址";

SPSite site = new SPSite(siteUrl);

SPWeb web = site.AllWebs[0];

SPList list = web.Lists["MyList"];//MyList是站点下的一个List名称。

SPEventReceiverDefinition newReceiver = list.EventReceivers.Add();

newReceiver.Class = "EventLogger.ListEventLogger";//此处是上面所写Event Receivers的命名空间及类名

newReceiver.Assembly = "Feature, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ef3c06797f59570f";//此处可以用Reflector.exe查看。

newReceiver.SequenceNumber = 5000;

newReceiver.Type = SPEventReceiverType.ItemUpdated;

newReceiver.Update();

}

其实这些代码都是最基本的代码,也不需要太多解释。

 

这样就可以通过程序的方法,将List Event Receivers发布到MyList这个List中。

将修改MyList中的某一项时,就生成了一条日志记录。

二、        通过Feature来布置。

Feature一般是放在C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES下面的,每一个Feature都有自己单独的文件夹(本例子中叫做LogFeature),文件夹下面一般有2个文件: Feature.xmlElement.xml(这个文件的名字可以自己定义).

Feature.xml的结构如下:

    Title="Event Logger"

    Description="Add log to a text file."

         Scope="Site"

    xmlns="">

   

        Element.xml" />

   

Element.xml的结构如下:

   

        Id="ReportListEventLogger"

        Location="Feature"

        GroupId="SiteActions"

        Title="Add event logger"

        ControlAssembly="Feature, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ef3c06797f59570f"

        ControlClass="EventLogger.ListEventLogger">

   

当在Features文件夹下有Feature.xmlElement.xml之后,你就可以用Stsadm命令行来安装Feature,具体命令如下:

Stsadm.exe –o installfeature –filename LogFeature\feature.xml

这样就安装完成了,可以在页面中或再用命令行来激活.

 三.通过Content Type来布置:此种方法没有学会,还望高人指点.

阅读(1433) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~