Sharepoint 2013 C# Add recurring event, Shows in calender view but is not there
-
11-10-2020 - |
Frage
From C# codebehind I added a recurring event
SPList olist = web.Lists[appname];
SPListItem item = olist.AddItem();
item["EventDate"] = startdate;// 9/5/2016 8:00:00 PM // System.DateTime
item["EndDate"] = enddate;// 9/5/2016 9:00:00 PM // System.DateTime
item["Title"] = "Each Monday Monthly 4 recurrences";
item["RecurrenceData"] = "<recurrence><rule><firstDayOfWeek>su</firstDayOfWeek><repeat><monthlyByDay mo="TRUE" weekdayOfMonth="first" monthFrequency="1"/></repeat><repeatInstances>4</repeatInstances></rule></recurrence>";
item["fRecurrence"] = true;
item["fAllDayEvent"] = false;
item["EventType"] = 1;
item.Update();
The allitems view shows the start day and end day as 9/5 and the calendar view shows all the recurrences. If I click on a recurrence I get Item does not exist. If I edit from allitems view and save with no changes, the end date updates to 12/5 then click a on a recurrence from calendar view will bring up the recurrence (URL is the same.)
What am I missing? I also tried .ToUniversalTime() to no avail.
Lösung
You are missing "UID" field. Set it to a GUID.
item["UID"] = System.Guid.NewGuid();
Example:
using (SPSite site = new SPSite("http://aissp2013/sites/Team1/"))
{
SPWeb rootWeb = site.RootWeb;
SPList cal = rootWeb.Lists["AIS Calendar"];
SPListItem newItem = cal.AddItem();
newItem["Title"] = "IDC Townhall";
newItem["Location"] = "WAR Room 13";
newItem["EventDate"] = new DateTime(2015,2,10, 10,0,0);
newItem["EndDate"] = new DateTime(2015, 2, 10, 11, 0, 0);
newItem["Recurrence"] = true;
newItem["RecurrenceData"] = "<recurrence><rule><firstDayOfWeek>su</firstDayOfWeek><repeat><weekly tu='TRUE'" +
" weekFrequency='1' /></repeat><repeatInstances>2</repeatInstances></rule></recurrence>";
newItem["EventType"] = 1;
newItem["UID"] = System.Guid.NewGuid();
newItem.Update();
cal.Update();
}
See Recursive Calendar Event for more information.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange