在MOSS中,我们通常会为列表添加许多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,这与上种方式速度上肯定有差异,类似于在页面上隐藏掉某些东西与删除掉某些东西(相信很多同仁在修改首页或模板页都做过这些事情,呵呵)吧,做事要有始有终。

转载于:https://www.cnblogs.com/greeny/archive/2010/09/03/1817097.html

MOSS中删除绑定到List上的Eventhandler相关推荐

  1. Android中删除常用联系人(上)

    在Android 4.0中,google已经把移除常用联系人这个功能去掉. 当用户在进行拨打电话,接听电话等电话行为时,系统会自动对其对应号码的使用进行计数.然后根据计数情况来显示常用联系人. 移除常 ...

  2. jQuery unbind 删除绑定事件 / 移除标签方法

    jQuery unbind 删除绑定事件 unbind([type],[data]) 是 bind()的反向操作,从每一个匹配的元素中删除绑定的事件.如果没有参数,则删除所有绑定的事件.你可以将你用b ...

  3. 删除iPhone邮箱smtp服务器,如何使用iOS13苹果系统删除iPhone和iPad上的所有电子邮件...

    是否要删除iPhone或iPad上的所有电子邮件?您可以使用最新版本的iOS和iPadOS轻松地从任何iPhone或iPad上的邮件应用程序删除每封电子邮件,并且在所有iPhone,iPad和iPod ...

  4. 如何在iPhone上共享视频之前从视频中删除音频

    Sometimes, you'd like to share a video with others, but the accompanying audio track is distracting ...

  5. 从administrators组中删除guest来宾账户时提示无法在内置账号上运行此操作的解决办法...

    从administrators组中删除guest来宾账户时提示无法在内置账号上运行此操作 我的win2003服务器曾经杀出过木马,后来发现guest账号还会自动开启 经检查,guest账号居然跑到ad ...

  6. 怎样在Mac或Windows上的Parallels中删除虚拟机?

    你需要从Parallels或Parallels Desktop Lite中删除虚拟机吗?当你因为任何原因使用特定的环境,操作系统或VM时,或许需要删除虚拟机从而释放磁盘空间,虽然这个现象很常见,但是很 ...

  7. 在计算机窗口中什么中的文件不能被删除,在Windows操作系统中,“回收站”可以恢复(1)上使用键删除的文件或文件夹。在“我的电脑”窗口中,...

    55题库为您解答: 正确答案:B 解析:本题考查Windows操作系统应用的基本知识.在Windows操作系统中,"回收站"可以恢复硬盘上使用Del>键删除的文件或文件夹.& ...

  8. iphone交通卡忘记删除_如何从iPhone上的电子钱包应用中删除卡和通行证

    iphone交通卡忘记删除 You go to open the Wallet app on your iPhone so that you can delete a card or pass you ...

  9. 电话中删除搜索框内的语音图标按钮。所有应用菜单上面的搜索框当菜单下拉后会重叠。相机视频拍的设置里面有个EIS,删除这个菜单,默认开启EIS。视频画质默认720p。

    电话中删除搜索框内的语音图标按钮: override/vendor/mediatek/proprietary/packages/apps/Dialer/java/com/android/dialer/ ...

  10. 怎么从计算机上删除东西吗,怎么在电脑中删除不想要的软件

    在电脑中删除不想要的软件该怎么操作呢,那么怎么在电脑中删除不想要的软件的呢?下面是学习啦小编收集整理的怎么在电脑中删除不想要的软件,希望对大家有帮助~~ 在电脑中删除不想要的软件的方法 工具/原料 笔 ...

最新文章

  1. 对话图灵奖得主John Hennessy,他说对美国留学签证变化很忧心
  2. 帝国cms微信小程序多语言相亲交友制作记录难点使用的小程序组件分析
  3. mysql如何查询本年_mysql 查询本月、本年的数据
  4. cesium添加填充_Cesium中级教程1 - 空间数据可视化(一)
  5. jquery显示和隐藏元素
  6. ubuntu vim中输入中文
  7. python 初始化数组_Python里面这些点,据说90%的新手都会一脸懵逼
  8. Kali安装AWVS
  9. 一键logo生成器_logo制作助手下载-logo制作助手APP免费版下载v1.1
  10. 无线增益多路负反馈带通滤波器的研究
  11. 带weixin扫码登陆注册|仿城通网盘源码修复版
  12. AUTOSAR基础篇之CanTsyn
  13. thymeleaf渲染搜索页面(template: “class path resource [templates/serach.html]“)-serach2021-09-23
  14. uniapp实现点击回到顶部
  15. 库克低调访华,3小时郑州行程俨然一位效率大师
  16. 江西丰收节直播带货 国稻种芯·中国水稻节:消费季产销两旺
  17. Ubuntu使用lightdm避坑
  18. 类似微信聊天界面加载历史记录的样式
  19. 战棋SRPG游戏开发-序
  20. 文件夹加入到sys.path

热门文章

  1. byte,int,char的区别
  2. scala循环 方法与函数
  3. Linux下通过HostName访问主机以及修改HostName方法
  4. Vue源码解读之事件机制
  5. 用金蝶kis记账王批量审核会计凭证的方法
  6. 等到小牛电动车出N2再买的原因
  7. 单调队列:temperature
  8. 网络高可用性99 999 9999 99999
  9. 双链表 c teacher-double-nohead-noloop
  10. winform+c#之窗体之间的传值