SharePoint Liste Ögesi Güncellerken Ögeye Bağlı Başka Olayların Tetiklenmesini Engellemek

Merhaba arkadaşlar bugün sizlere SharePoint kodlarken karşımıza çıkan bir sorunun çözümünden bahsedeceğim.

Bildiğiniz gibi bazen çok fazla data olan listelerde toplu bir güncelleme yapmanız gerekmektedir ya da yeni datalar eklemeniz gerekmektedir ama bunu yaparken arka planda bu liste öğelerine bağlı olan workflow, event receiver vs gibi olaylarında tetiklenmemesini ve değişiklikten dolayı çalışmamasını isteyebiliriz.

Bu ve benzeri durumlarda yapmamız gereken event firing özelliğini disable etmek.

Bunu yapacağımız projeye bir class ekliyoruz ve adını “EventFiring.cs” olarak velirliyoruz.

Bu classımızın içine aşağıdaki kodu ekliyoruz.

</p>
<p>public class EventFiring : SPItemEventReceiver<br />
{<br />
public void DisableHandleEventFiring()<br />
{<br />
this.EventFiringEnabled =false;<br />
}</p>
<p>public void EnableHandleEventFiring()<br />
{<br />
this.EventFiringEnabled =true;<br />
}<br />
}</p>
<p>

Bu sınıf içerisinde yer alan “DisableHandleEventFiring()” metodumuz olayların tetiklenmesini kapatmamıza, “EnableHandleEventFiring()” metodu ise tekrar açmamıza yarayacaktır.

Bundan sonra diğer kodumuz içerisinde yazmış olduğumuz öğe güncelleme kodundan bir önce bu tetiklemeyi kapatıp ögemizi güncelleyip sonrasında bu özelliği tekrar açabiliriz.

</p>
<p>EventFiring eventFiring = newEventFiring();</p>
<p>eventFiring.DisableHandleEventFiring();</p>
<p>item.Update();</p>
<p>eventFiring.EnableHandleEventFiring();</p>
<p>

Bu şekilde uygulamamızı çalıştırığımız zaman öğe güncelleme sırasında arka planda bağlı olan hiç bir olayın tetiklenmediğini göreceksiniz.

Bir Cevap Yazın