删除绑定到List中的Eventhandler
来源:互联网 发布:手机淘宝店铺招牌素材 编辑:程序博客网 时间:2024/04/30 11:38
在MOSS2007中,我们通常会为列表添加许多eventhandler事件处理程序,但总有一个问题,就是怎么将这些Eventhandler移除掉,在网上搜了下,一直没找到好的解决方法,无非将这个dll从GAC中删除掉,或者重新步一个空的程序集,不过始终觉得这种方式,怎么说呢,比较“土”(万一不记得名字了。。。),呵呵,从老外的一个博客上突然得到了一个思路,用另外一种方式添加这个dll,这种方式的好处是能给这个dll分配一个Guid,这样我们就可以找到它,从而将它删除。
通常,我们使用如下方式来为列表注册一个Eventhandler事件处理程序(早肥兄教程里也是用的这种方式):
SPSite site = new SPSite(siteurl);
site.OpenWeb(weburl);
SPList list = web.Lists[列表名字];
list.EventReceivers.Add(事件类型,程序集名称,类名);
每个 SPList 对象都具有一个 EventReceivers 集合。EventReceivers 集合公开了一个具有三种不同重载实现的 Add 方法。这个Add 方法是添加Eventhandler的最简单方法,它要求传递三个参数。如果您希望通过代码绑定事件处理程序,至少必须提供程序集的名称、命名空间限定的类名,以及使用来自 WSS 对象模型的 SPEventReceiverType 枚举的事件类型。调用 Add 方法是最简单的方法,但不是在所有情况下都很灵活。
以下代码说明了一个更加复杂的方法,其中事件处理程序绑定通过直接对 SPEventReceiverDefinition 对象进行编程来完成。这样您就有机会为绑定指定一个特定的 GUID 标识符,以便可以更轻松地添加和删除它们。它还使您能够初始化 SequenceNumber 属性和 Data 属性。
SPList SalesLeadsList=web.Lists[列表名字];
SPEventReceiverDefinitionCollection receivers;
receivers = SalesLeadsList.EventReceivers;
Guid ItemAddingDefId=new Guid();
ItemAddingDefId = new Guid("2D96ADCE-E7A9-461b-8DB6-1E4309419503");//指定Guid
if(!receivers.EventReceiverDefinitionExist(ItemAddingDefId))
{
SPEventReceiverDefinition ItemAddingDef;
ItemAddingDef = receivers.Add(ItemAddingDefId);
ItemAddingDef.Name = "ItemDeleteingHandler";
ItemAddingDef.Type = 事件类型;
ItemAddingDef.Assembly = 程序集名称;
ItemAddingDef.Class = 类名;
ItemAddingDef.Data = "today";
ItemAddingDef.SequenceNumber = 1001;
ItemAddingDef.Update();
}
这样我们就为该程序集指定了一个Guid,并通过这个Guid来删除掉它。
if (receivers.EventReceiverDefinitionExist(ItemAddingDefId))
{
receivers[ItemAddingDefId].Delete();
}
小结:单纯的从GAC里将Eventhandler卸载了,在执行添加更新删除时,列表肯定还会去找这个Eventhandler,这与上种方式速度上肯定有差异,类似于在页面上隐藏掉某些东西与删除掉某些东西(相信很多同仁在修改首页或模板页都做过这些事情,呵呵)吧,做事要有始有终。
- 删除绑定到List中的Eventhandler
- C# 中的EventHandler
- C# 中的EventHandler
- C# 中的EventHandler
- 删除List中的元素
- 删除list中的偶数
- 注册和取消EventHandler 事件绑定
- EventHandler
- DataSet,DataTable,List实现将Sql Server表中的数据绑定到GradView中
- ASP .NET - XML 文件绑定到List
- 删除list中的重复数据
- 删除list中的重复数据
- c#删除 list中的元素
- 遍历删除List中的元素
- 连续删除List中的元素
- 循环删除list中的元素
- 遍历删除List中的元素
- 删除list中的一个节点
- bi demo
- google开源了WebRTC项目(5)
- 百度C++吧教材推荐
- 使用JavaScript下进行iframe的DOM操作(考虑浏览器兼容性)
- 解决Rational Rose 2003 安装时出现1920错误
- 删除绑定到List中的Eventhandler
- iphone 内存管理memory
- ADO 动态链接数据库
- Oracle10g 创建远程连接
- 今天,Bob Parsons有一个新的标签:亿万富翁
- MTK 11A MMS
- servlet 实现
- eclipse开发项目,数据库连接失败
- 10句编程箴言 每个程序员都应该知道