2014-11-20 3 views
0

Я использую C# и CSOM для создания приложения, которое создает событие в календаре SharePoint, которое, как я знаю, существует в моей подписке O365. Я знаю, что 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(); 
    } 

ответ

0

Решение было сочетанием форматирования даты как строки, которые могли бы понять 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(); 
Смежные вопросы