Thank you for contacting Syncfusion support.
In Load on demand concept, Scheduler current date is passed to the controller where the current view range will be calculated, and appointments will be filtered based on that range. Range calculation and filtering process are done in Models-> AppointmentRepository.cs file as shown below. We have prepared the LOD CRUD sample for your reference which can be download from the below location.
In the above sample, during the initial load, view change, and performing any CRUD action will call GetData function to filter only the current view range appointments. It is the default behavior and currently there is no option to send array of dates.
<Code>
public ActionResult GetData(string CurrentView, DateTime CurrentDate, string CurrentAction)
{
var data = AppointmentRepository.FilterAppointment(CurrentDate, CurrentAction, CurrentView);
BatchDataResult result = new BatchDataResult();
result.result = data;
result.count = db.Appointments.ToList().Count > 0 ? db.Appointments.ToList().Max(p => p.Id) : 1;
return Json(result, JsonRequestBehavior.AllowGet);
}
public static List<Appointment> FilterAppointment(DateTime CurrentDate, String CurrentAction, String CurrentView)
{
ScheduleDataDataContext db = new ScheduleDataDataContext();
DateTime CurrDate = Convert.ToDateTime(CurrentDate);
DateTime StartDate = FirstWeekDate(CurrDate.Date);
DateTime EndDate = FirstWeekDate(CurrDate.Date);
List<Appointment> DefaultScheduleList = db.Appointments.ToList();
switch (CurrentView)
{
case "day":
StartDate = CurrentDate;
EndDate = CurrentDate.AddHours(24);
break;
case "week":
EndDate = EndDate.AddDays(7);
break;
case "workweek":
EndDate = EndDate.AddDays(5);
break;
case "month":
StartDate = CurrDate.Date.AddDays(-CurrDate.Day + 1);
EndDate = StartDate.AddMonths(1);
break;
case "agenda":
EndDate = EndDate.AddDays(7);
break;
}
DefaultScheduleList = db.Appointments.ToList().Where(app => app.StartTime >= StartDate && app.StartTime <= EndDate || app.Recurrence==true).ToList();// here particular date DefaultSchedule is filtered
return DefaultScheduleList;
}
internal static DateTime FirstWeekDate(DateTime CurrentDate)
{
try
{
DateTime FirstDayOfWeek = CurrentDate;
DayOfWeek WeekDay = FirstDayOfWeek.DayOfWeek;
switch (WeekDay)
{
case DayOfWeek.Sunday:
break;
case DayOfWeek.Monday:
FirstDayOfWeek = FirstDayOfWeek.AddDays(-1);
break;
case DayOfWeek.Tuesday:
FirstDayOfWeek = FirstDayOfWeek.AddDays(-2);
break;
case DayOfWeek.Wednesday:
FirstDayOfWeek = FirstDayOfWeek.AddDays(-3);
break;
case DayOfWeek.Thursday:
FirstDayOfWeek = FirstDayOfWeek.AddDays(-4);
break;
case DayOfWeek.Friday:
FirstDayOfWeek = FirstDayOfWeek.AddDays(-5);
break;
case DayOfWeek.Saturday:
FirstDayOfWeek = FirstDayOfWeek.AddDays(-6);
break;
}
return (FirstDayOfWeek);
}
catch
{
return DateTime.Now;
}
}
</Code>
Regards,
Karthigeyan