用Feature控制列表EventHandle

 
 

sharepoint站点Feature的定制与开发中讲了Feature,在sharepoint列表EventHandle的开发中讲了Event(简称)(,但这两者之间能不能建立起关系呢?答案是肯定的。下面我就介绍个例子,用站点的Feature来控制列表Event事件的工作。在开始做例子之前呢,还是先讲一下大概效果:当激活Feature时,列表的Event开始工作,当列表新增一个文档项时,同时会向数据库表中加入相关数据记录。当Feature被停止时,Event也停止工作,这时新建文档时,不会再向数据库表中加入数据记录。
做这个例子呢,会延用前面介绍的两个例子:
sharepoint站点Feature的定制与开发sharepoint列表EventHandle的开发中的一些步骤(如不清楚,请先看这两篇应用,再往下看),好进一步加深对前面例子的里解。当然也要合理的利用资源嘛,这样才能达到功能的扩展。呵呵,回归正题,赶紧进入DEMO:
第一步:
开发部署上Event。这里就按照sharepoint列表EventHandle的开发中的第一、第二步进行。先建数据库表,再用VS创建类库项目,项目名称为“EventHandle”(参照例子)。完成Event开发。
第二步:
开发部署Feature。这里也是延用sharepoint站点Feature的定制与开发中的工程项目“FeatureToRunCode”,但MyCode.cs的代码将被修改为:

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

namespace FeatureToRunCode
{
    public class MyCode:SPFeatureReceiver
    {

        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {//当激活Feature时,起用报销单库的增删改事件


            SPWeb web = (SPWeb)properties.Feature.Parent;
            web.AllowUnsafeUpdates = true;
            SPList list = web.Lists["报销单"];
            string asmName = "EventHandle, Version=1.0.0.0, Culture=neutral, PublicKeyToken=01dc07d3d1e20903";
            string className = "EventHandle.listEventHandle";

            //这是调用列表增删改事件的方法
            list.EventReceivers.Add(SPEventReceiverType.ItemAdded, asmName, className);
            list.EventReceivers.Add(SPEventReceiverType.ItemUpdated, asmName, className);
            list.EventReceivers.Add(SPEventReceiverType.ItemDeleting, asmName, className);
            web.Close();
        }
        public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        {
            //当停止Feature时,取消Feature事件
            SPWeb web = (SPWeb)properties.Feature.Parent;
            web.AllowUnsafeUpdates = true;
            SPList list = web.Lists["报销单"];
            for (int i = list.EventReceivers.Count-1; i >=0; i--)
            {
                 //这是清除列表增删改事件的方法

                list.EventReceivers[i].Delete();
              
            }

              web.Close();
        }
        public override void FeatureInstalled(SPFeatureReceiverProperties properties)
        {

        }
        public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
        {

        }

    }
}

保存,重新生成项目。将重新生成的FeatureToRunCode.dll重新拖到C:/WINDOWS/assembly目录下,重启一下IIS。
这样就完成开发了。
第三步:
当然也是我们最关心的事了,就是查看效果了。首先呢,当然是先打开数据库表了,但看一下当前表中是什么数据,如图:

接着,进入网站设置---->网站功能---->找到“FeatureToRunCode”这个Feature,先将Feature设为停止状态,向报销单库里加入一条数据,看Event是否工作,如果数据库表里没有加入数据记录为成功(当然如果程序有错也不会成功,这可不算在内啊,呵呵)。当激活Feature时,向报销单库里加入一项表单数据(petpet费用报销单)时,如图:


数据库表中的记录也会相应的增加,如图:

这样,用Feature控制Event的功能就已经完成了。以后对Event的控制就方便了,不再需要用控制台之类的程序来代劳了,还能远程控制呢,真方便。有没有一种心动的感觉呢,那就快动手了......

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值