Performance of Scheduler with High Volume of Data?

2 posts, 0 answers
  1. copatten
    copatten avatar
    3 posts
    Member since:
    Dec 2014

    Posted 16 Aug Link to this post

    The scheduler performs well with the small number of events we have been rendering using the component. However the volume of events will increase for our use case considerably over time.

    We are currently using an OData feed to retrieve the events. Is there any guidance on how best it would be to render events when dealing with a high volume of data?

    Should we be loading data per month per user, and then when the user moves to the next month it requests further data? As part of this has any performance testing being carried out on the scheduler to understand what volume of data the scheduler works best with, where performance may start to degrade?

  2. Vladimir Iliev
    Vladimir Iliev avatar
    2155 posts

    Posted 18 Aug Link to this post

    Hi Conor,

    The best way to approach such scenarios is to request only the data for the visible days from the server (implement server filtering). Such example of using the dataSource "transport.parameterMap" function to add the filtering parameters to the server request is available in our code library:
    parameterMap: function(options, operation) {
        if (operation === "read") {
            var scheduler = $("#scheduler").data("kendoScheduler");
            var result = {
                start: scheduler.view().startDate(),
                end: scheduler.view().endDate()
            return kendo.stringify(result);
        return kendo.stringify(options);

    Updated version of the function that get the visible date range from the Scheduler prior reading the data is available below:

    function getAdditionalData() {
        var scheduler = $("#scheduler").data("kendoScheduler");
        var timezone = scheduler.options.timezone;
        var startDate = kendo.timezone.convert(scheduler.view().startDate(), timezone, "Etc/UTC");
        var endDate = kendo.timezone.convert(scheduler.view().endDate(), timezone, "Etc/UTC");
        //optionally add startTime / endTime of the view
        var startTime =;
        var endTime =;
        endTime = endTime == 0 ? : endTime;
        var result = {
            Start: new Date(startDate.getTime() - (startDate.getTimezoneOffset() * + startTime),
            End: new Date(endDate.getTime() - (endDate.getTimezoneOffset() * + endTime)
        return result;

    Vladimir Iliev
    Telerik by Progress
    Get started with Kendo UI in days. Online training courses help you quickly implement components into your apps.
Back to Top