在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的控制就方便了,不再需要用控制台之类的程序来代劳了,还能远程控制呢,真方便。有没有一种心动的感觉呢,那就快动手了......
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!