Per EventReceiver in einer Dokumentbibliothek auf das Feld Titel zugreifen

Wenn man in einem synchronen EventReceiver (-ing) einer Dokumentbibliothek auf die Standard-Titelspalte (Title) zugreifen möchte, wird man beim ersten Versuch sehr wahrscheinlich eine Überraschung erleben. Man bekommt weder einen neu eingegebenen Wert, noch kann man dieses Feld ändern. Die Lösung für dieses Problem ist ganz einfach (wenn man es weiß): man muß dort das Feld "vti_title" verwenden.

Der Effekt tritt nur in synchronen Ereignissen wie ItemAdding oder ItemUpdating und nur in Dokumentbibliotheken auf. Normalerweise kann man bei diesen Ereignissen über

properties.AfterProperties["InternerFeldname"]

auf die neuen Werte zugreifen. Ebenso kann man die Werte setzen, indem man den gewünschten Wert als string in die AfterProperties schreibt:

properties.AfterProperties["InternerFeldname"] = "Neuer Wert"

Wenn man das mit dem Standardfeld Titel versucht, dessen interner Name immer Title ist, wird man feststellen, daß man falsche Werte erhält und daß Änderungen nicht übernommen werden. Lösung: bei den genannten Umständen (synchrones Ereignis einer Dokumentbibliothek) muß als Feldname immer "vti_title" verwendet werden.

Falls jemand eine Begründung für dieses mehr als seltsame Verhalten kennt, möge er mir diese bitte mitteilen. Würde mich brennend interessieren.

Ein Gedanke zu “Per EventReceiver in einer Dokumentbibliothek auf das Feld Titel zugreifen

  1. Hi,Is it me or the table are the same ? This was not the case in the past (as we can see in blog that stole your content long time ago ).Did you canhge the table to reflect the behavior or Synchronous Event ?Edgar

    Gefällt mir

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s