SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Wie finde ich raus, welches Feld geändert wurde?

Unbeantwortet Dieser Beitrag hat 3 Antworten

Ohne Rang
216 Beiträge
Nachtschelm erstellt 19 Apr. 2010 11:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Forum,
ich entwickle zzt einen VS Workflow, der bei Änderung eines Eintrages gestartet wird. Nun beinhaltet der WF Kopiervorgänge, die nur dann durchgeführt werden sollen, wenn der Wert eines bestimmten Feldes geändert wurde. Bei dem Feld handelt es sich um ein normales Auswahlfeld. Ich habe nun versucht über SPListItemVersion das entsprechende Feld mit dem des Vorgängers zu vergleichen. Allerdings erhalte ich just bei dem Feld, auf das es ankommt immer eine NullReferenceException. Warum weiß ich nicht, da das Feld immer einen Wert enthält.

Meine Frage: Kennt jmd eine andere Möglichkeit, herauszufinden, welche Felder eines Eintrags seit der letzten Bearbeitung geändert wurden?

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 19 Apr. 2010 12:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich benutze dafür immer die Versionierung - genau wie Du es ja versuchst hast. Woher kommt denn die Null-Referenz? Ist die Versionierung überhaupt eingeschaltet?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
216 Beiträge
Nachtschelm Als Antwort am 19 Apr. 2010 13:48
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,
ich habe meinen Fehler gefunden. Ich habe irrtümlicherweise nicht bei dem jüngsten Versionsitem, sondern beim ältesten angefangen. Bin davon aus gegangen, dass ich mit

currentListItem.Versions[currentListItem.Versions.Count-1];

die zuletzt geänderte Version bekäme. Tatsächlich bekomme ich so die allererste gespeicherte Version eines Items. Um die Version vor der aktuellen zu erhalten greife ich nun auf das Item an der Indexstelle 1 zu:

currentListItem.Versions[1];

Ich denke, damit habe ich das Problem gelöst.

Noch eine Frage am Rande: Kann ich mit item.SystemUpdate() vermeiden, dass ein ItemChangedEvent gefeuert wird und der Workflow sich immer wieder selbst ins Leben ruft?

Vielen Dank!

Viele Grüße
Nachtschelm

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 19 Apr. 2010 14:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Nachtschelm"]currentListItem.Versions[1];[/quote]

Nicht vergessen zu prüfen, ob es diese Version auch gibt (könnte auch gelöscht sein).

 [quote user="Nachtschelm"]Kann ich mit item.SystemUpdate() vermeiden, dass ein ItemChangedEvent gefeuert wird [/quote]

Ich glaube ja, aber ohne Gewähr. Probiere es lieber nochmal aus.

Viele Grüße
Andi
af @ evocom de
Blog