- 
                            Data Grids / Data Management- 
                Data Grid- Overview
- 
                Data Binding
- 
                Filtering
- Sorting
- 
                Editing
- 
                Grouping
- 
                Selection
- Focused Row
- Paging
- 
                Scrolling
- 
                Columns
- 
                Master-Detail
- 
                Data Summaries
- 
                Drag & Drop
- 
                Export to PDF
- 
                Export to Excel
- Appearance
- 
                Customization
- State Persistence
- 
                Adaptability
- 
                Keyboard Navigation
- Right-To-Left Support
 
- 
                Tree List- Overview
- 
                Data Binding
- 
                Filtering
- Sorting
- 
                Editing
- 
                Selection
- Focused Row
- Paging
- 
                Columns
- Drag & Drop
- State Persistence
- Adaptability
- 
                Keyboard Navigation
 
- 
                Card View
- 
                Pivot Grid- Overview
- 
                Data Binding
- 
                Field Management
- 
                Data Summaries
- Drill Down
- Filtering
- 
                Scrolling
- 
                Export to Excel
- Chart Integration
- Customization
- State Persistence
 
- 
                Filter Builder
 
- 
                
- 
                            Data Visualization- 
                Charts- Overview
- 
                Data Binding
- 
                Common Concepts- 
                Axis
- 
                Aggregation
- 
                Tooltips
- 
                Selection
- 
                Customization
- 
                Zooming
- 
                Export
 
- 
                
- 
                Area Charts
- 
                Bar Charts
- Bullet Charts
- 
                Doughnut Charts
- 
                Financial Charts
- 
                Funnel and Pyramid Charts
- 
                Line Charts
- Pareto Chart
- 
                Pie Charts
- 
                Point Charts
- 
                Polar and Radar Charts
- 
                Range Charts
- Sankey Chart
- 
                Sparkline Charts
- 
                Tree Map
 
- 
                Gauges- Overview
- 
                Runtime update
- 
                Bar Gauge
- 
                Circular Gauge
- 
                Linear Gauge
 
- 
                Diagram- Overview
- 
                Data Binding
- 
                Featured Shapes
- 
                Custom Shapes
- 
                Document Capabilities
- 
                User Interaction
- UI Customization
- Adaptability
 
 
- 
                
- 
                            Scheduling / Planning- 
                Scheduler- Overview
- 
                Data Binding
- 
                Views
- 
                Appointments
- 
                Timetable
- Editing
- 
                Grouping
- Virtual Scrolling
- Drag & Drop
- 
                Customization
- Adaptability
 
- 
                Gantt- Overview
- Data Binding
- 
                Filtering
- Sorting
- Strip Lines
- Export to PDF
- Validation
- 
                Customization
 
 
- 
                
- 
                            Reporting- 
                AI-powered Extensions
- 
                Interaction
- 
                Report Types
- 
                Data binding
- 
                Real-life Reports
- 
                Layout Features
- 
                Report Controls
- 
                Web-specific Features
 
- 
                
- 
                            Rich Text Editor- Overview
- Load/Save
- Document Protection
- 
                Templates
- Autocorrect
- 
                Customization
- Simple View
 
- 
                            Spreadsheet- Overview
- 
                Open a Document
- Export And Printing
- 
                Features
- 
                UI Customization
 
- 
                            Messaging
- 
                            WYSIWYG Editor
- 
                            Forms
- 
                            Data Editors- Overview
- 
                Common Concepts
- 
                Calendar
- Check Box
- Color Box
- Date Box
- 
                Date Range Box
- 
                Number Box
- Radio Group
- 
                Range Selector
- Range Slider
- Slider
- Speech To Text
- Switch
- Text Area
- Text Box
 
- 
                            Drop-Downs- Autocomplete
- 
                Drop Down Box
- 
                Select Box
- 
                Tag Box
- 
                Lookup
 
- 
                            Buttons
- 
                            File Upload / File Management- 
                File Manager- Overview
- 
                File System Types
- 
                Customization
 
- 
                File Uploader
 
- 
                
- 
                            Popup and Notifications
- 
                            Navigation- Overview
- Accordion
- 
                Context Menu
- 
                Menu
- Multi View
- 
                Drawer
- 
                Tab Panel
- 
                Tabs
- 
                Toolbar
- 
                Stepper
- Pagination
- 
                List
- 
                Tree View
- Right-to-Left Support
 
- 
                            Layout- 
                Tile View
- Splitter
- 
                Gallery
- Scroll View
 
- 
                
- 
                            Interactive Wrappers- 
                Sortable
- Resizable
 
- 
                
- 
                            Progress Indicators
- 
                            Maps- Overview
- 
                Map
- 
                Vector Map- 
                Data Binding
- Multiple Layers
- 
                Markers
- Legend
- 
                Zooming and Panning
- 
                Customization
 
- 
                
 
- 
                            Localization
Related Demos:
        
            Your search did not match any results.
        
    Scheduler - Overview
DevExtreme ASP.NET Core Scheduler is a jQuery-powered client-side component with features like multiple calendar views, time zone support, and current time indication. You can configure it with Razor C# syntax. You can use it in MVC views and Razor Pages.
            
            Backend API
        
    @model IEnumerable<DevExtreme.NETCore.Demos.Models.WorkoutAppointment>
@(Html.DevExtreme().Scheduler()
    .DataSource(Model)
    .TimeZone("America/Los_Angeles")
    .TextExpr("Text")
    .StartDateExpr("StartDate")
    .EndDateExpr("EndDate")
    .Views(new[] { SchedulerViewType.Month })
    .CurrentView(SchedulerViewType.Month)
    .CurrentDate(new DateTime(2021, 6, 2, 11, 30, 0))
    .FirstDayOfWeek(FirstDayOfWeek.Monday)
    .StartDayHour(8)
    .EndDayHour(19)
    .ShowAllDayPanel(false)
    .Height(710)
    .Groups(new[] { "EmployeeID" })
    .Resources(res => { res.Add()
        .FieldExpr("EmployeeID")
        .ColorExpr("Color")
        .DisplayExpr("Text")
        .ValueExpr("Id")
        .AllowMultiple(false)
        .Label("Employee")
        .DataSource(new[] {
            new {
                Id = 1,
                Text = "John Heart",
                Color = "var(--background-color-1)",
                Avatar = "../../images/employees/19.png",
                Age = 27,
                Discipline = "ABS, Fitball, StepFit"
            },
            new {
                Id = 2,
                Text = "Greta Sims",
                Color = "var(--background-color-2)",
                Avatar = "../../images/employees/31.png", 
                Age = 25,
                Discipline = "ABS, Fitball, StepFit"
            }
        });
    })
    .DataCellTemplate(new JS("dataCellTemplate"))
    .ResourceCellTemplate(@<text>
        <div>
            <div class="name" style="background-color: <%- data.Color %>;">
                <h2><%- data.Text %></h2>
            </div>
            <div class="avatar" title="<%- data.Text %>">
                <img src="<%- data.Avatar %>" alt=""/>
            </div>
            <div class="info" style="color: <%- data.Color %>;">
                Age: <%- data.Age %> <br />
                <b><%- data.Discipline %></b>
            </div>
        </div>
    </text>)
)
<script>
    function isWeekEnd(date) {
        let day = date.getDay();
        return day === 0 || day === 6;
    }
    function getCurrentTraining(date, employeeID) {
        let result = (date + employeeID) % 3;
        let currentTraining = "training-background-" + result;
        return currentTraining;
    }
    function dataCellTemplate(cellData, index, container) {
        let employeeID = cellData.groups.EmployeeID;
        let currentTraining = getCurrentTraining(cellData.startDate.getDate(), employeeID);
        let wrapper = $('<div>')
            .toggleClass('employee-weekend-' + employeeID, isWeekEnd(cellData.startDate)).appendTo(container)
            .addClass('employee-' + employeeID)
            .addClass('dx-template-wrapper');
        wrapper.append($('<div>')
            .text(cellData.text)
            .addClass(currentTraining)
            .addClass('day-cell')
        );
    }
</script>
        
        using Microsoft.AspNetCore.Mvc;
using DevExtreme.NETCore.Demos.Models.SampleData;
using DevExtreme.NETCore.Demos.ViewModels;
namespace DevExtreme.NETCore.Demos.Controllers {
    public class SchedulerController : Controller {
        public ActionResult Overview() {
            return View(SampleData.Workouts);
        }
    }
}
        
        using System;
namespace DevExtreme.NETCore.Demos.Models {
    public class WorkoutAppointment : Appointment {
        public int EmployeeID { get; set; }
    }
}
        
        using System;
using System.Collections.Generic;
namespace DevExtreme.NETCore.Demos.Models.SampleData {
    public partial class SampleData {
        public static readonly IEnumerable<WorkoutAppointment> Workouts = new[] {
            new WorkoutAppointment {
                Text = "Helen",
                EmployeeID = 2,
                StartDate = "2021-06-01T16:30:00.000Z",
                EndDate = "2021-06-01T18:30:00.000Z"
            },
            new WorkoutAppointment {
                Text = "Helen",
                EmployeeID = 2,
                StartDate = "2021-06-10T16:30:00.000Z",
                EndDate = "2021-06-11T18:30:00.000Z"
            },
            new WorkoutAppointment {
                Text = "Alex",
                EmployeeID = 1,
                StartDate = "2021-06-02T16:30:00.000Z",
                EndDate = "2021-06-02T18:30:00.000Z"
            },
            new WorkoutAppointment {
                Text = "Alex",
                EmployeeID = 1,
                StartDate = "2021-06-11T19:00:00.000Z",
                EndDate = "2021-06-11T20:00:00.000Z"
            },
            new WorkoutAppointment {
                Text = "Alex",
                EmployeeID = 2,
                StartDate = "2021-06-16T16:30:00.000Z",
                EndDate = "2021-06-16T18:30:00.000Z"
            },
            new WorkoutAppointment {
                Text = "Stan",
                EmployeeID = 1,
                StartDate = "2021-06-07T16:30:00.000Z",
                EndDate = "2021-06-07T18:30:00.000Z"
            },
            new WorkoutAppointment {
                Text = "Stan",
                EmployeeID = 1,
                StartDate = "2021-06-28T16:30:00.000Z",
                EndDate = "2021-06-28T18:30:00.000Z"
            },
            new WorkoutAppointment {
                Text = "Stan",
                EmployeeID = 1,
                StartDate = "2021-06-30T16:30:00.000Z",
                EndDate = "2021-06-30T18:30:00.000Z"
            },
            new WorkoutAppointment {
                Text = "Rachel",
                EmployeeID = 2,
                StartDate = "2021-06-04T16:30:00.000Z",
                EndDate = "2021-06-04T18:30:00.000Z"
            },
            new WorkoutAppointment {
                Text = "Rachel",
                EmployeeID = 2,
                StartDate = "2021-06-07T16:30:00.000Z",
                EndDate = "2021-06-07T18:30:00.000Z",
            },
            new WorkoutAppointment {
                Text = "Rachel",
                EmployeeID = 1,
                StartDate = "2021-06-21T16:30:00.000Z",
                EndDate = "2021-06-21T16:30:00.000Z"
            },
            new WorkoutAppointment {
                Text = "Kelly",
                EmployeeID = 2,
                StartDate = "2021-06-15T16:30:00.000Z",
                EndDate = "2021-06-15T18:30:00.000Z"
            },
            new WorkoutAppointment {
                Text = "Kelly",
                EmployeeID = 2,
                StartDate = "2021-06-29T16:30:00.000Z",
                EndDate = "2021-06-29T18:30:00.000Z"
            }
        };
    }
}
        
        .dx-scheduler-group-header,
.dx-scheduler-date-table-cell {
  position: relative;
}
.dx-scheduler-group-header-content {
  padding-left: 8px;
}
.dx-color-scheme-light,
.dx-color-scheme-carmine,
.dx-color-scheme-softblue,
.dx-color-scheme-blue-light,
.dx-color-scheme-saas-light,
.dx-color-scheme-lime-light,
.dx-color-scheme-orange-light,
.dx-color-scheme-purple-light,
.dx-color-scheme-teal-light {
  --text-color-1: rgba(0, 0, 0, .6);
  --text-color-2: rgba(255, 255, 255, 1);
  --disabled-color: rgba(0, 0, 0, 0.38);
  --background-color-1: rgba(50, 134, 56, 1);
  --background-color-2: rgba(194, 81, 0, 1);
}
.dx-color-scheme-dark,
.dx-color-scheme-darkviolet,
.dx-color-scheme-darkmoon,
.dx-color-scheme-blue-dark,
.dx-color-scheme-saas-dark,
.dx-color-scheme-lime-dark,
.dx-color-scheme-orange-dark,
.dx-color-scheme-purple-dark,
.dx-color-scheme-teal-dark {
  --text-color-1: rgba(255, 255, 255, 1);
  --text-color-2: rgba(54, 54, 64, 1);
  --disabled-color: rgba(255, 255, 255, 0.38);
  --background-color-1: rgba(159, 213, 161, 1);
  --background-color-2: rgba(255, 181, 127, 1);
}
.dx-scheduler-header .dx-toolbar .dx-button,
.dx-scheduler-header .dx-toolbar .dx-button .dx-icon {
  color: var(--text-color-1);
}
.dx-scheduler-date-table-other-month.dx-scheduler-date-table-cell {
  opacity: 1;
  color: var(--disabled-color) !important;
}
.dx-scheduler-work-space-month .dx-scheduler-date-table-cell {
  color: var(--text-color-1);
}
.dx-scheduler-work-space-month .dx-scheduler-appointment,
.dx-scheduler-work-space-month .dx-scheduler-appointment.dx-state-focused {
  color: var(--text-color-2);
  line-height: 22px;
}
.dx-scheduler-work-space-month .dx-scheduler-appointment .dx-scheduler-appointment-content {
  padding-top: 0;
}
.dx-scheduler-date-table-cell .dx-template-wrapper {
  position: absolute;
  height: 100%;
  width: 100%;
  padding-right: 6px;
}
.avatar {
  width: 124px;
  float: left;
  overflow: hidden;
  position: relative;
  height: 124px;
  border: 1px solid rgba(0, 0, 0, 0.24);
  border-radius: 50%;
  background-color: rgba(255, 255, 255, 1);
}
.avatar img {
  position: relative;
  width: 126px;
  height: 130px;
  object-fit: contain;
}
.avatar[title="John Heart"] img {
  top: 5px;
  left: 3px;
}
.avatar[title="Greta Sims"] img {
  top: 5px;
  left: -7px;
}
.name {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
}
.name h2 {
  color: var(--text-color-2);
  font-size: 28px;
  text-align: left;
  padding: 0 0 0 170px;
  margin: 0;
  height: 40px;
  line-height: 40px;
}
.info {
  width: auto;
  text-align: left;
  height: 100%;
  font-size: 14px;
  line-height: 20px;
  font-weight: normal;
  padding: 25px 20px 25px 40px;
  color: #707070;
}
.dx-color-scheme-contrast .info {
  color: #fff;
}
.day-cell {
  width: 100%;
  height: 100%;
  background-position: center center;
  background-repeat: no-repeat;
}
.dx-scheduler-appointment {
  color: rgba(255, 255, 255, 1);
}
.employee-1 {
  background-color: rgba(55, 126, 58, 0.08);
}
.employee-2 {
  background-color: rgba(194, 81, 0, 0.08);
}
.employee-weekend-1 {
  background-color: rgba(55, 126, 58, 0.12);
}
.employee-weekend-2 {
  background-color: rgba(194, 81, 0, 0.12);
}
.training-background-0 {
  background-image: url("../../../images/Scheduler/Overview/icon-abs.png");
}
.training-background-1 {
  background-image: url("../../../images/Scheduler/Overview/icon-step.png");
}
.training-background-2 {
  background-image: url("../../../images/Scheduler/Overview/icon-fitball.png");
}