Kalenderwerte durch Code manipulieren

Die Standard SharePoint-Kalender benutzen folgende Felder (die interne Feldbezeichnung) für das Start- und Enddatum der jeweiligen Einträge: EventDate und EndDate. Beim Zugriff über ein SPListItem-Objekt kann es durchaus vorkommen, dass man beim Versuch, einen Wert zu aktualisieren (auch wenn korrekte Datumswerte übergeben werden), folgende Fehlermeldung erhält:

Es wurden ungültige Daten zur Aktualisierung des Listeneintrags verwendet. Das Feld, das Sie aktualisieren möchten, ist möglicherweise schreibgeschützt.


Falls die SharePoint-Umgebung auf Englisch installiert ist, lautet der Fehlertext: „Invalid data has been used to update the list item. The field you are trying to update may be read only.“ Doch was nun? Nach einigen Tests fand ich heraus, dass die Felder „EventDate“ und „EndDate“ immer nur im Doppelpack aktualisiert werden dürfen. D.h. immer dann, wenn man einem der beiden Felder einen neuen Wert zuweisen will, muss auch das andere mit einem Wert (auch wenn es der alte ist) versehen werden. Dann klappt das Update reibungslos.

Hier ein kleines Beispiel:

Folgender Aufruf klappt nicht und erzeugt obige Fehlermeldung:

SPListItem item = SPContext.Current.Web.Lists["Kalender"].Items[0];
item["Title"] = "Heute";
item["EventDate"] = DateTime.Now;
item.Update();

Hier werden beide Datumsfelder behandelt und das Update findet statt:

SPListItem item = SPContext.Current.Web.Lists["Kalender"].Items[0];
item["Title"] = "Heute";
item["EventDate"] = DateTime.Now;
item["EndDate"] = DateTime.Now;
item["fAllDayEvent"] = true; //Das Ereignis soll als ganztägiges Ereignis deklariert werden
item.Update();

Eine Reaktion zu “Kalenderwerte durch Code manipulieren”

  1. Dirk

    Super! Danke für die Info – hat mir wirklich Zeit gespart!

Einen Kommentar schreiben