One other comment on custom schedule dataproviders. The ScheduleCOntrol expects the lists of appointments to be ordered in a special way. The primary sort order is determined by startdate, but there need to be 2 secondary sort orders such that AllDay appointments on a particular date appear before any non-allday appointments, and if 2 non-allday appointments start at the same time for a given day, the longer appointment appears first in the list. If you are basing your custom schedule provider off the MDB samples posted earlier here, those sample DO NOT provide the ordering.
Here is another sample. This sample has some corrections to the MDB_ScheduleDataProvider.cs code from the previous versions that were posted in the forums. In particular, MDB_ScheduleDataProvider.GetSchedule has been tweaked to make sure the appointments are sorted in a particular manner which is a requirement of the underlying schedule code. The appointments lists must be ordered by startdate with the AllDay appointments appearing first in date order. In addition, if an two appointment starts at the same time, the longer appointment appears before the shorter one.
CS_MDB_DerivedAppointmentsDLG.zip