2014-11-20 4 views
0

C36 및 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(); 
    } 

답변

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(); 
관련 문제