Behandelt den ItemUpdating-Ereignisempfänger, der mehr als einmal ausgelöst wird
-
29-09-2020 - |
Frage
Der Grund, warum der Ereignisempfänger für die Elementaktualisierung bei Dokumentbibliotheken zweimal ausgelöst wird, liegt im Ein-/Auschecken.
Außerdem kann es im Falle einer Dokumentbibliothek/-liste zweimal ausgelöst werden, wenn wir in diesem Elementaktualisierungsereignis die aktuellen Elementwerte aktualisieren.
Wie können wir diese beiden Fälle per Code behandeln?
Lösung
Für das Szenario, in dem Sie derjenige sind, der den zweiten auslöst ItemUpdating
Durch Ändern der Elementwerte können Sie die verwenden EventFiringEnabled
Parameter (Sie sollten a try - catch -finally
um es herum):
this.EventFiringEnabled = false;
// Do the changes
item.Update();
this.EventFiringEnabled = true;
Das andere Szenario ist schwieriger und der Grund, warum ich es verwende ItemUpdated
Stattdessen wann immer möglich!
Sie könnten das überprüfen BeforeProperties
, ListItem
Und AfterProperties
in deinem ItemUpdating
Ereignisempfänger, um zu prüfen, ob Aktualisierungen vorgenommen werden, bei denen Sie Maßnahmen ergreifen müssen.Wenn nicht, dann einfach return
.
Hier ist eine Anleitung für den Fall, dass Sie ihn verwenden können .BeforeProperties
und wann du in die gehen solltest .ListItem
stattdessen
Andere Tipps