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;
}