MOSS列表事件监听中再次更新列表项内容 SPListItem.Update() 导致循环

最近在使用MOSS列表的EventHandler,在列表发生跟新事件的时候,修改列表中的内容,再次更新列表项逻辑上会出现死循环的现象,但MOSS好像通过一种方式组织了死循环的发生,虽然可以在ItemUpdated中对列表再次进行更新,如下代码:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
ItemUpdated
public override void ItemUpdated(SPItemEventProperties properties)
{
    SPListItem item 
= properties.ListItem;
    item[
"Title"= "abc";
    item.Update();
}

 

但是代码执行的时候页面明显会慢很多,原因就是那个死循环搞的,不过页面并没有出现错误,就是会特别慢,从网上查到的资料是说MOSS自己在死循环执行10次以后,自行了断了。

有人给出了一个解决的方法,就是在执行更新的时候,把事件监听程序关掉,执行完更新操作后再将其开启,这样就绕过了死循环,代码如下:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
ItemUpdated
public override void ItemUpdated(SPItemEventProperties properties)
{
    SPListItem item 
= properties.ListItem;
    item[
"Title"= "abc";
    
///先关闭掉事件监听
    this.DisableEventFiring();
    item.Update();    
//此时列表项目的更新不会再被ItemUpdated(SPItemeventProperties properties)方法拦截。
    ///执行更新完毕后在将监听开启
     this.EnableEventFiring();
}

 

 

转载于:https://www.cnblogs.com/Nirvanalst/archive/2008/10/20/1315517.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值