新日历事件不显示

问题描述:

我正在使用C#和CSOM构建一个应用程序,该应用程序在我知道存在于O365订阅的SharePoint日历中创建事件。我知道O365是SharePoint 2013,但我的应用程序的目标是SharePoint 2010,所以我将不得不处理这两个版本。新日历事件不显示

不引发任何异常,并且一切似乎都成功,但即使在刷新页面后,新事件也不会显示在日历中。如果我收到具有相同事件标题的项目集合,则返回程序输入事件,并且似乎包含代码中设置的所有列。

CalendarItemCreate函数将数据放入日历的所有必需列中。如果我搜索通过SharePoint日历手动输入的其他日历项目,我可以找到它们。我可以在手动输入或程序输入事件之间看到的唯一区别是“描述”列有用于手动输入的事件。

任何想法?

private void CalendarItemCreate(ICalendarItem item) { 

     using (var context = new ClientContext(_calendarLocation)) { 
      context.Credentials = _credentials; 

      var web = context.Web; 
      var transferScheduleList = web.Lists.GetByTitle(TransferScheduleToken); 

      var listItemCreationInformation = new ListItemCreationInformation(); 
      var listItem = transferScheduleList.AddItem(listItemCreationInformation); 
      listItem[TitleToken] = item.EventTitle; 
      listItem[EventDateToken] = item.EventStartLocal; 
      listItem[EndDateToken] = item.EventStartLocal.AddMinutes(30); 
      listItem[DescriptionToken] = string.Empty; //item.EventDescription; 
      listItem[TransferTypeToken] = item.EventTransferType; 
      listItem[TransferStatusToken] = item.EventTransferStatus; 
      listItem[CategoryToken] = "Data Transfer"; 
      listItem[ConfigurationFileLocationToken] = item.ConfigurationFileLocation; 
      listItem[EventTypeToken] = 0; 
      listItem[FallDayEventToken] = false; 
      listItem[FrecurrenceToken] = false; 
      listItem.Update(); 

      context.ExecuteQuery(); 
    } 

该解决方案是将日期格式化为SharePoint可以理解的字符串以及我的两个传输列中的数据类型不匹配的组合。下面的代码是成功的。

 using (var context = new ClientContext(_calendarLocation)) { 
      context.Credentials = _credentials; 

      var web = context.Web; 
      var transferScheduleList = web.Lists.GetByTitle(TransferScheduleToken); 

      var listItemCreationInformation = new ListItemCreationInformation(); 
      var listItem = transferScheduleList.AddItem(listItemCreationInformation); 
      listItem[TitleToken] = item.EventTitle; 
      listItem[EventDateToken] = item.EventStartLocal.ToUniversalTime().ToString(@"yyyy-MM-ddTHH:mm:ssZ"); 
      listItem[EndDateToken] = item.EventStartLocal.AddMinutes(30).ToUniversalTime().ToString(@"yyyy-MM-ddTHH:mm:ssZ"); 
      listItem[DescriptionToken] = item.EventDescription; 
      listItem[TransferTypeToken] = item.EventTransferType.ToString(); 
      listItem[TransferStatusToken] = item.EventTransferStatus.ToString(); 
      listItem[CategoryToken] = "Data Transfer"; 
      listItem[ConfigurationFileLocationToken] = item.ConfigurationFileLocation; 
      listItem[EventTypeToken] = 0; 
      listItem[FallDayEventToken] = false; 
      listItem[FrecurrenceToken] = false; 
      listItem.Update(); 

      context.ExecuteQuery();