New to Telerik UI for ASP.NET MVCStart a free 30-day trial

Binding to a Custom DataSource

The Custom DataSource type of data binding is the default type of binding and provides full control over the client-side API options of the Kendo UI for jQuery DataSource.

Using a custom DataSource gives you complete control when it comes to:

  • Determining the request and response formats for the established remote services.
  • Defining Schema settings for consuming the established remote service.
  • Stating separately the server operations, such as server-filtering, server-sorting, server-paging, server-grouping, and server-aggregates.

The Custom DataSource supports the following custom types:

  • aspnetmvc-ajax—uses the traditional Ajax Binding.
  • odata—supports the OData v.2 protocol
  • odata-v4—partially supports OData v4.
  • signalR—simplifies adding real-time web functionality to apps by using the SignalR open-source library.

The following example demonstrates how to declare the Telerik UI for ASP.NET MVC Scheduler with a Custom DataSource.

Razor
    @(Html.Kendo().Scheduler<Kendo.Mvc.Examples.Models.Scheduler.MeetingViewModel>()
        .Name("scheduler")
        .Date(new DateTime(2022, 6, 13))
        .StartTime(new DateTime(2022, 6, 13, 7, 00, 00))
        .Height(600)
        .Views(views =>
        {
            views.DayView();
            views.WeekView(weekView => weekView.Selected(true));
            views.MonthView();
            views.AgendaView();
        })
        .Timezone("Etc/UTC")
        .Resources(resource =>
        {
            resource.Add(m => m.RoomID)
                .Title("Room")
                .DataTextField("Text")
                .DataValueField("Value")
                .DataColorField("Color")
                .BindTo(new[] {
                        new { Text = "Meeting Room 101", Value = 1, Color =     "#6eb3fa" },
                        new { Text = "Meeting Room 201", Value = 2, Color =     "#f58a8a" }
                });
            resource.Add(m => m.Attendees)
                .Title("Attendees")
                .Multiple(true)
                .DataTextField("Text")
                .DataValueField("Value")
                .DataColorField("Color")
                .BindTo(new[] {
                        new { Text = "Alex", Value = 1, Color = "#f8a398" },
                        new { Text = "Bob", Value = 2, Color = "#51a0ed" },
                        new { Text = "Charlie", Value = 3, Color = "#56ca85" }
                });
        })
        .DataSource(d => d
                .Custom() // Declare a Custom DataSource.
                .Batch(true)
                .Schema(schema => schema // Compose the Model's schema.
                    .Model(m =>
                    {
                        m.Id(f => f.MeetingID);
                        m.Field("title", typeof(string)).DefaultValue("No   title").From("Title");
                        m.Field("start", typeof(DateTime)).From("Start");
                        m.Field("end", typeof(DateTime)).From("End");
                        m.Field("description", typeof(string)).From ("Description");
                        m.Field("recurrenceID", typeof(int)).From   ("RecurrenceID");
                        m.Field("recurrenceRule", typeof(string)).From  ("RecurrenceRule");
                        m.Field("recurrenceException", typeof(string)).From ("RecurrenceException");
                        m.Field("isAllDay", typeof(bool)).From("IsAllDay");
                        m.Field("startTimezone", typeof(string)).From   ("StartTimezone");
                        m.Field("endTimezone", typeof(string)).From ("EndTimezone");
                    }))
                .Transport(transport => transport // Set up the transport operations.
                    .Read(read => read.Url("https://demos.telerik.com/kendo-ui/ service/meetings")
                          .DataType("jsonp"))
                    .Create(create => create.Url("https://demos.telerik.com/    kendo-ui/service/meetings/create")
                          .DataType("jsonp"))
                    .Destroy(destroy => destroy.Url("https://demos.telerik.com/ kendo-ui/service/meetings/destroy")
                          .DataType("jsonp"))
                    .Update(update => update.Url("https://demos.telerik.com/    kendo-ui/service/meetings/update")
                          .DataType("jsonp"))
                    .ParameterMap("parameterMap")) // Wire to a handler that will alter the request format.
        )
    )

    <script>
        function parameterMap(options, operation) { // Handler that alters the request format.
            if (operation !== "read" && options.models) {
                return { models: kendo.stringify(options.models) };
            }
        }
    </script>

For a complete example on the Custom DataSource Binding, refer to the demo on custom datasource binding of the Scheduler.

See Also

In this article
See Also
Not finding the help you need?
Contact Support