In fact, i deleted this code from GetAppointments into the provider :
if (apt.RecurrenceParentID != null){ apt.RecurrenceState = RecurrenceState.Exception;} Because, for me, this ocurrence (previously moved from series) is now with a type NotRecuring.
And it's working great like this.
The original code is here :
http://docs.telerik.com/devtools/aspnet-ajax/controls/scheduler/data-binding/providers/implementing-a-provider-that-supports-multi-valued-resources
To answer to you previous post, this is a part of my code for the GetAppointments method :
public override IEnumerable<Appointment> GetAppointments(RadScheduler owner){ List<Appointment> appointments = new List<Appointment>(); List<CAppointmentInfo> appointmentInfos = new List<CAppointmentInfo>(); List<CAppointmentInfo> uniqueAppointmentInfos = AppointmentInfos.Where(x => x.Start >= owner.VisibleRangeStart && x.End <= owner.VisibleRangeEnd && x.RecurrenceRule == string.Empty).ToList(); List<CAppointmentInfo> recurrenceAppointmentInfos = AppointmentInfos.Where(x => x.RecurrenceRule != string.Empty).ToList(); appointmentInfos.AddRange(uniqueAppointmentInfos); appointmentInfos.AddRange(recurrenceAppointmentInfos); foreach (CAppointmentInfo appointmentInfo in appointmentInfos) { Appointment apt = new Appointment(); apt.Owner = owner; apt.ID = appointmentInfo.ID; apt.Subject = appointmentInfo.Subject; apt.Start = DateTime.SpecifyKind(appointmentInfo.Start, DateTimeKind.Utc); apt.End = DateTime.SpecifyKind(appointmentInfo.End, DateTimeKind.Utc); apt.RecurrenceRule = appointmentInfo.RecurrenceRule; apt.RecurrenceParentID = appointmentInfo.RecurrenceParentID; if (appointmentInfo.Reminder != null) { IList<Reminder> reminders = Reminder.TryParse(appointmentInfo.Reminder); if (reminders != null) { apt.Reminders.AddRange(reminders); } } if (apt.RecurrenceRule != string.Empty) { apt.RecurrenceState = RecurrenceState.Master; } LoadResources(appointmentInfo, apt); appointments.Add(apt); } return appointments;}