Syncfusion Blazor Scheduler Component
When to Use This Skill
Use this skill whenever the user needs to:
- Create or configure a Blazor Scheduler component
- Bind local or remote data
- Manage appointments, events, or calendar data
- Set up different calendar views (Day, Week, Month, Timeline, Agenda)
- Implement recurring events or recurrence patterns
- Handle appointment CRUD operations (create, read, update, delete)
- Configure appointment drag-and-drop or resizing
- Work with resources or grouping
- Set up timezones or localization
- Customize Scheduler appearance or behavior
- Handle events and callbacks
- Persist state or manage data binding
- Enable accessibility features
- Export or print scheduler data
- Set up virtual scrolling for large datasets
- Use clipboard copy, cut, or Paste features
- Configure custom toolbar
Component Overview
The Syncfusion Blazor Scheduler is a comprehensive calendar component that allows you to:
- Display appointments in multiple views (Day, Week, Month, Timeline, Agenda, Year)
- Manage appointments with full CRUD operations and complete control
- Support recurring events with iCalendar-compatible recurrence rules
- Enable drag-and-drop and resizing functionality for intuitive scheduling
- Handle multiple resources and flexible grouping models
- Support timezone-aware appointments with IANA timezone conversion
- Customize appointment appearance with templates, EventRendered events, and CSS classes
- Prevent or customize overlapping appointments (AllowOverlap property)
- Configure blocking time slots and read-only appointments
- Display interactive tooltips with custom templates
- Persist state and manage local/remote data binding
- Filter, retrieve, and refresh appointments dynamically
- Provide keyboard navigation, accessibility (WCAG 2.2), and RTL support
Documentation and Navigation Guide
Getting Started
📄 Read: references/getting-started.md
- Installation via NuGet packages
- Setting up Blazor project
- Adding required namespaces and services
- Basic component initialization
- First minimal working example
Appointments and Event Fields
📄 Read: references/appointments.md
- Built-in appointment fields (Id, Subject, StartTime, EndTime, Location, Description, Timezone, etc.)
- Custom field mapping, binding, and validation
- Event field settings with labels, defaults, and validation rules
- Adding custom fields to appointments
- Normal, spanned, all-day, and blocked events
- Read-only appointments and slot availability
- Overlapping event customization and prevention (AllowOverlap)
Appointment Appearance and Management
📄 Read: references/appointment-appearance.md
- Appointment appearance with EventRendered styling
- Tooltips (built-in, custom templates, conditional)
- Appointment selection and retrieval (GetEventsAsync, GetCurrentViewEvents)
- Filtering appointments with Query
- Refresh appointments with RefreshEventsAsync
Appointment Customization
📄 Read: references/appointment-customization.md
- Template-based event customization
- EventRendered event for styling
- CssClass property for bulk styling
- Custom attributes and classes
- Event appearance modifications
- Tooltip customization with templates
Drag and Drop
📄 Read: references/appointment-drag-and-drop.md
- Enable/disable drag-and-drop functionality
- Single and multi-drag operations
- Drag event handling and prevention
- Scroll control during drag
- Navigation trigger on edges
- Drag intervals and external sources
- Opening editor on drag completion
Resizing Events
📄 Read: references/appointment-resizing.md
- Enable/disable resizing functionality
- Scroll control during resize
- Scroll speed configuration
- Resize time intervals
- Preventing specific resizing actions
Scheduler Views
📄 Read: references/views.md
- 12 available view modes (Day, Week, WorkWeek, Month, Agenda, MonthAgenda, TimelineDay, TimelineWeek, TimelineWorkWeek, TimelineMonth, TimelineYear, Year)
- Setting current/active view with @bind-CurrentView property
- View configuration properties table
- ScheduleView component properties (Option, IsSelected, DateFormat, Readonly, ShowWeekend, WorkDays, etc.)
- Day view with hourly time slots and single-day display
- Day view with Interval property for multiple consecutive days (2-day, 3-day views)
- Week view displaying 7-day week (Sunday-Saturday) with all appointments
- Week view with FirstDayOfWeek customization (1=Monday, 0=Sunday)
- Work Week view showing only working days (Mon-Fri by default)
- Custom working days per view with WorkDays int array (0=Sun, 1=Mon, etc.)
- Month view with full month calendar grid layout
- Month view with MaxEventsPerRow property to limit/expand events display
- Agenda view displaying upcoming events in chronological list format (7 days default)
- Agenda view with AgendaDaysCount property for custom date range
- Agenda view with AllowVirtualScrolling for large datasets
- Month Agenda view combining month calendar with agenda list below
- Timeline Day view showing single day in horizontal layout
- Timeline Week view showing 7-day week horizontally
- Timeline Work Week view showing working days horizontally
- Timeline Month view showing entire month horizontally
- Timeline Year view showing full year horizontally with Orientation customization
- Year view displaying mini-calendar with month selection and appointment indicators
View Configuration and Customization
📄 Read: references/view-configuration-and-customization.md
- View-specific configuration properties table
- Limit concurrent appointment labels with MaxEventStack in Day, Week, and WorkWeek views
- Extending view intervals with Interval property (3-day, 2-week, quarterly, annual views)
- Display Name customization for extended views with DisplayName property
- Setting specific start and end hours with StartHour/EndHour (e.g., "09:00"-"18:00")
- Time range limiting to business hours only
- Hide weekends in calendar views using ShowWeekend="false"
- Display ISO week numbers with ShowWeekNumber="true"
- Readonly mode per view using Readonly="true" to prevent CRUD operations
- View-specific templates (EventTemplate, DateHeaderTemplate, CellTemplate, etc.)
- Event template customization per view for different rendering
- Date header template customization per view
- Cell templates and custom cell content per view
- DateFormat customization per view for date display
- Switching views programmatically with CurrentView property binding
- View navigation via header toolbar with built-in view buttons
- Resource header templates per view for grouped schedules
- Resource-based view configuration and display options
Events and Interactions
📄 Read: references/events.md
- All Scheduler events (ActionBegin, ActionCompleted, Created, Destroyed, etc.)
- Event arguments and action types
- Two-way binding and callbacks
- DataBinding and DataBound events
- Event selection and retrieval
Recurring Events
📄 Read: references/recurring-events.md
- Recurrence rule syntax and iCalendar format
- FREQ, INTERVAL, COUNT, UNTIL properties
- BYDAY, BYMONTHDAY, BYMONTH configurations
- Creating recurring events
- Exception dates and editing occurrences
- Edit/delete following events
CRUD Operations
📄 Read: references/crud-actions.md
- Create appointments via editor or AddEventAsync
- Inline appointment creation
- Update appointments with proper validation
- Delete single or multiple appointments
- Server-side database operations
- Restricting actions based on criteria
Data Binding
📄 Read: references/data-binding.md
- Local data binding with List collections
- Remote data binding with HTTP services
- DataSource configuration
- Query-based filtering
- Refresh appointments dynamically
- DataSource property and event settings
- Load data on demand
- Set custom headers for authentication/authorization
Customization and Styling
📄 Read: references/scheduler-styling.md
- CSS customization
- Custom styling with CssClass
- Style overrides for components
- Responsive design adjustments
Cell Customization
📄 Read: references/cell-customization.md
- Cell dimensions in vertical and timeline views
- CellTemplate for custom content
- CellHeaderTemplate for headers
- OnRenderCell event for dynamic styling
- Weekend and specific date styling
- MinDate and MaxDate restrictions
- Multi-cell and multi-row selection
Header Bar and Toolbar Customization
📄 Read: references/header-bar.md
- ShowHeaderBar property to display or hide header
- ScheduleToolBar component for toolbar configuration
- Built-in toolbar items (ScheduleToolBarPrevious, Next, DateRange, Today, Views, NewEvent)
- ScheduleToolBarCustom for adding custom elements to toolbar
- ItemType options for custom items (Button, Input, Spacer, Separator)
- Creating custom toolbar with buttons for export, print, and other actions
- Adding dropdown controls to toolbar for filtering by resources
- Real-world toolbar configuration example with owner resource filtering
- EnableAdaptiveUI property for responsive/mobile-friendly layout
- Toolbar consolidation and "New Event" button in adaptive mode
- DateHeaderTemplate for customizing date cells in day/week views
- OnRenderCell event with ElementType.DateHeader for dynamic date header styling
- Weekend and special date styling in date header
- DateRangeTemplate for customizing displayed date range text
- TimelineYear view header customization with DayHeaderTemplate
- MonthHeaderTemplate for month headers in TimelineYear
- HeaderIndentTemplate for customizing left indent area in timeline views
- Vertical and horizontal orientation in timeline views
- Resource-grouped view headers
- Combining multiple templates for advanced header layouts
Header Rows
📄 Read: references/header-rows.md
- ScheduleHeaderRow component structure and properties
- HeaderRowType enum options (Year, Month, Week, Date, Hour)
- View compatibility for each header row type
- Basic multi-level header row setup
- Year and month header rows for long-range timelines
- Week number header rows for weekly organization
- Displaying complete year timeline with Interval=12
- Day and hour header rows for detailed scheduling
- Customizing header rows with Template property
- Template context and accessing Date in templates
- Header row styling with CSS classes
- Color customization for different header levels
- Header rows with resource-grouped views
- Combining multiple header rows (2-5 levels)
- Order and hierarchy guidelines for header rows
- Localization in header rows by culture
- ISO week number calculations and display
- Common patterns (quarterly, weekly, daily, resource views)
- Performance considerations with multiple rows
Editor Template
📄 Read: references/editor-template.md
- Default editor window and double-click behavior
- Customizing editor field labels with Title property
- Field validation using ValidationRules (Required, RegexPattern, MinLength, MaxLength)
- Editing default time duration with OnPopupOpen event
- Preventing editor/quick popups by canceling PopupOpenEventArgs
- Popup types (Editor, QuickInfo, EditEventInfo, ViewEventInfo, EventContainer, etc.)
- Opening editor window manually with OpenEditorAsync method
- Creating completely custom editor using EditorTemplate
- Customizing editor header and footer with EditorHeaderTemplate/EditorFooterTemplate
- Adding resource dropdown options to editor template
Editor Advanced Customization
📄 Read: references/editor-advanced-customization.md
- Adding recurrence pattern fields to editor template
- Applying DataAnnotations validation in editor templates
- Quick info popups on single-click (cell and event)
- Customizing quick popup appearance with ScheduleQuickInfoTemplates
- Quick popup template types (Cell, Event, Both) for different popup scenarios
Quick Popup and Validation
📄 Read: references/quick-popup-and-validation.md
- Quick popup customization combinations
- Custom header, content, footer for quick popups
- Disabling quick popups with ShowQuickInfo or OnPopupOpen event
- Multiple cell selection and QuickInfoOnSelectionEnd property
- AllowMultiRowSelection for multi-day selection behavior
- More events indicator popup when cell exceeds capacity
- Preventing more events popup with MoreEventsClicked event
- CloseQuickInfoPopupAsync method to programmatically close popups
Clipboard Operations
📄 Read: references/clipboard.md
- Copy/paste appointments
- Copy event data to clipboard
- Paste handling and validation
- Multi-appointment operations
- Keyboard navigation shortcuts
Resources and Grouping
📄 Read: references/resources.md
- ScheduleResource component structure and generic parameters
- Resource field mapping (Field, TextField, IdField, ColorField, etc.)
- Complete resource fields reference table
- Local resource data binding with List collections
- Binding resources with ExpandoObject for dynamic models
- Binding resources with DynamicObject custom implementation
- Binding resources with ObservableCollection for dynamic updates
- Multiple resources without visual grouping (AllowMultiple property)
- Single-level resource grouping with ScheduleGroup
- Multi-level hierarchical resource grouping (GroupIDField)
Resource Grouping and Customization
📄 Read: references/resource-grouping-and-customization.md
- One-to-One grouping with ByGroupID="false"
- Grouping resources by date (ByDate="true") in calendar views
- Shared events across resources (AllowGroupEdit="true")
- Simple resource header customization with templates
- Multiple column resource headers for timeline views
- Expand and collapse resources with ExpandedField
- Resource header tooltips with HeaderTooltipTemplate
- Resource color selection with ResourceColorField
- Custom working hours per resource (StartHourField, EndHourField)
- Custom working days per resource (WorkDaysField)
Timescale Configuration
📄 Read: references/timescale.md
- Timescale slots and intervals
- Major and minor timescale settings
- Custom timescale format
- Time display options
- Work hours configuration
Working Hours
📄 Read: references/working-hours.md
- Setting working hours range
- Work hour highlighting
- Highlight color and styling
- Business hours for resources
- Non-working hour customization
Timezones
📄 Read: references/timezone.md
- IANA timezone support
- StartTimezone and EndTimezone fields
- Timezone conversion
- Daylight saving time handling
- Timezone-aware scheduling
Localization
📄 Read: references/localization.md
- Setting date format (DateFormat property)
- Time mode configuration (TimeFormat property)
- Right-to-left (RTL) support (EnableRtl property)
Virtual Scrolling
📄 Read: references/virtual-scrolling.md
- Virtual scrolling overview and when to use (100+ resources, 5,000+ appointments)
- Enable AllowVirtualScrolling in timeline views (TimelineDay, TimelineWeek, TimelineWorkWeek, TimelineMonth, TimelineYear)
- Virtual scrolling in Agenda view for large upcoming event lists
- Virtual scrolling in Timeline Month view with resource grouping
- Virtual scrolling benefits (reduced memory, smooth scrolling, DOM optimization)
- VirtualResourceCount property to control visible resources at once (default 30)
- VirtualResourceCount configuration for different screen sizes (20-50 standard, 100+ for large displays)
- Virtual scrolling with 300+ resources and sparse appointments
- Virtual scrolling with resource grouping and hierarchical organization
- Virtual scrolling combined with custom templates (ResourceHeaderTemplate, EventTemplate)
- Resource header templates with virtual scrolling for metadata display
- Event templates with virtual scrolling for custom event rendering
- Lazy loading appointments with EnableLazyLoading="true" property
- Lazy loading on-demand approach for viewport-based data retrieval
- Lazy loading with server-side appointment filtering by ResourceId
- Server-side controller implementation for lazy loading (ResourceId query params)
- Lazy loading parameters (StartDate, EndDate, ResourceId filtering)
- Virtual scrolling with DataManager for remote data binding
- Virtual scrolling and lazy loading combined for massive datasets
- Performance optimization with virtual scrolling (VirtualResourceCount tuning)
- Performance optimization with sparse data (not all resources have events daily)
- Performance optimization with EnableMaxHeight, AllowKeyboard settings
- CSS optimization for virtual scrolling (will-change property, min-height)
- Virtual scrolling limitations (not in Month/Year/MonthAgenda views)
- Virtual scrolling limitations (limited support in TimelineYear Vertical Orientation)
- When virtual scrolling is NOT beneficial (small datasets <100 resources)
- Combining virtual scrolling with MaxEventsPerRow for cell optimization
- Virtual scrolling with scroll-on-demand and automatic resource loading
- Memory management in virtual scrolling scenarios
- Testing virtual scrolling performance with actual large datasets
State Persistence
📄 Read: references/state-persistence.md
- Persisted properties (view, date)
- Local storage integration
Exporting and Importing
📄 Read: references/exporting.md
- Excel export to XLSX/CSV using ExportToExcelAsync
- Exporting with custom fields and field filtering
- Exporting recurring event occurrences as individual records (IncludeOccurrences)
- Exporting custom event data subset with CustomData option
- Customizing column headers with ExportFieldInfo
- Export with custom filename (FileName property)
- Excel file formats (XLSX vs CSV via ExportType)
- Export with specific date format (DateFormat option)
- Customize Excel sheet before export with OnExcelExporting event
- ExcelExport API for cell formatting, headers, styles
- ICS calendar export to .ics format (Outlook, Google Calendar compatible)
- ICS export with custom filename
ICS Import and Printing
📄 Read: references/ics-import-and-printing.md
- Importing events from external ICS files with ImportICalendarAsync
- File uploader integration for importing ICS files
- Merging imported events with existing appointments
- PrintAsync method without options (default print)
- PrintAsync method with PrintOptions (custom width/height)
- Print current view with all visible appointments
Dimensions
📄 Read: references/dimensions.md
- Height and width configuration
- Responsive sizing
- Auto-height for rows
- Cell and column dimensions
- Container constraints
Row Auto Height
📄 Read: references/row-auto-height.md
- Enable/disable auto height
- Row height calculation
- Content overflow handling
- Responsive row sizing
Performance and WebAssembly
📄 Read: references/webassembly-performance.md
- Avoid unnecessary component renders using
@key directive
- Use PreventRender to reduce re-renders after scheduler events
Quick Start Example
@using Syncfusion.Blazor.Schedule
<SfSchedule TValue="AppointmentData" Height="650px" @bind-SelectedDate="@CurrentDate">
<ScheduleEventSettings DataSource="@DataSource"></ScheduleEventSettings>
<ScheduleViews>
<ScheduleView Option="View.Day"></ScheduleView>
<ScheduleView Option="View.Week"></ScheduleView>
<ScheduleView Option="View.WorkWeek"></ScheduleView>
<ScheduleView Option="View.Month"></ScheduleView>
<ScheduleView Option="View.Agenda"></ScheduleView>
</ScheduleViews>
</SfSchedule>
@code{
DateTime CurrentDate = new DateTime(2026, 3, 24);
List<AppointmentData> DataSource = new List<AppointmentData>
{
new AppointmentData
{
Id = 1,
Subject = "Conference",
StartTime = new DateTime(2026, 3, 24, 9, 30, 0),
EndTime = new DateTime(2026, 3, 24, 11, 0, 0)
}
};
public class AppointmentData
{
public int Id { get; set; }
public string Subject { get; set; }
public string Location { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public string Description { get; set; }
public bool IsAllDay { get; set; }
public string RecurrenceRule { get; set; }
public string RecurrenceException { get; set; }
public Nullable<int> RecurrenceID { get; set; }
}
}
Common Patterns
1. CRUD Operations
- Create: Use
AddEventAsync() method or double-click cells for editor
- Read: Use
GetEventsAsync() or GetCurrentViewEvents() or GetBlockEventsAsync()
- Update: Modify appointment and use
SaveEventAsync()
- Delete: Use
DeleteEventAsync() method or delete key for multi-select
- Check availability: Use
IsSlotAvailableAsync() to prevent overlaps
2. Appointment Management
- Readonly appointments: Set
IsReadonly = true on individual events or use Readonly property
- Block time slots: Set
IsBlock = true to prevent scheduling on those slots
- Overlapping control: Use
AllowOverlap="false" to prevent overlaps
- Custom fields: Add custom properties beyond built-in fields (Status, Priority, etc.)
- Field mapping: Use
ScheduleField tags for custom field names
3. Appearance Customization
- Templates: Use
<Template> for custom appointment HTML
- EventRendered: Apply dynamic CSS classes based on data
- CssClass: Apply predefined CSS classes from appointment data
- Tooltips: Enable with
EnableTooltip="true" and customize with TooltipTemplate
- Cell styling: Use
OnRenderCell event or CellTemplate
4. Event Handling
- ActionBegin: Intercept before operations (validate, cancel, check overlap)
- ActionCompleted: Execute after successful operations
- EventRendered: Customize appointment appearance
- OnDragStart / OnResizeStart: Control drag/resize behavior
- TooltipOpening: Conditionally show/hide tooltips
5. View Management
- Set
CurrentView property to change active view
- Configure each view independently with view-specific properties
- Use
DisplayName for custom view labels
- Extend views with
Interval property (e.g., 3-day view)
6. Recurring Events
- Use standard iCalendar
RecurrenceRule format (FREQ, INTERVAL, COUNT, UNTIL)
- Add
RecurrenceException dates to exclude occurrences
- Use
RecurrenceID for edited occurrences
- Support daily, weekly, monthly, yearly patterns with FREQ property
7. Data Binding
- Local: Bind
DataSource to List
- Remote: Bind to HTTP service returning data
- Use
Query property for server-side filtering
- Call
RefreshEventsAsync() to reload data without full refresh
Key Props and Configuration
| Property |
Purpose |
Example |
Height |
Scheduler height in pixels/percentage |
Height="650px" |
Width |
Scheduler width in pixels/percentage |
Width="100%" |
CurrentView |
Active view (Day, Week, Month, etc.) |
CurrentView="View.Week" |
SelectedDate |
Currently displayed date |
@bind-SelectedDate="@date" |
AllowDragAndDrop |
Enable/disable drag functionality |
AllowDragAndDrop="true" |
AllowResizing |
Enable/disable resize functionality |
AllowResizing="true" |
AllowMultiDrag |
Allow dragging multiple appointments |
AllowMultiDrag="true" |
AllowOverlap |
Prevent overlapping appointments |
AllowOverlap="false" |
AllowInline |
Quick inline creation on cell click |
AllowInline="true" |
Readonly |
View-only mode (no CRUD) |
Readonly="true" |
MinDate |
Minimum date boundary |
MinDate="new DateTime(2026,1,1)" |
MaxDate |
Maximum date boundary |
MaxDate="new DateTime(2026,12,31)" |
CssClass |
Custom CSS class for styling |
CssClass="custom-scheduler" |
EnableMaxHeight |
Appointments occupy full cell height |
EnableMaxHeight="true" |
EnableIndicator |
Show indicator for multiple appointments |
EnableIndicator="true" |
EnableAutoRowHeight |
Auto-adjust row heights for content |
EnableAutoRowHeight="true" |
Common Use Cases
- Employee Scheduling - Multiple resources with drag-drop and approval workflow
- Meeting Rooms Reservation - Resource-based booking with timezone support
- Doctor's Appointments - Recurring slots with patient blocking
- Project Task Management - Timeline views with progress tracking
- Educational Timetable - Multiple classes with resource grouping
- Shift Management - Working hours, shift patterns with recurrence
- Event Calendar - Public events with recurrence and filtering
- Field Service Dispatch - Mobile-friendly with offline support
Next Steps: Read the appropriate reference file based on your use case to understand specific features and implementation details.
1---
2name: syncfusion-blazor-scheduler
3description: Implement Syncfusion Blazor Scheduler component for comprehensive appointment and event scheduling. Use this when building calendar interfaces, managing appointments with CRUD operations, implementing multiple view modes, setting up recurring events, or handling timezone-aware scheduling. This skill covers views (day, week, month, timeline, agenda), drag-and-drop functionality, resizing, resources, localization, data binding, state persistence, and advanced customization options for scheduling applications.
4metadata:
5 author: "Syncfusion Inc"
6 version: "34.1.29"
7---
8
9# Syncfusion Blazor Scheduler Component
10
11## When to Use This Skill
12
13**Use this skill whenever the user needs to:**
14- Create or configure a Blazor Scheduler component
15- Bind local or remote data
16- Manage appointments, events, or calendar data
17- Set up different calendar views (Day, Week, Month, Timeline, Agenda)
18- Implement recurring events or recurrence patterns
19- Handle appointment CRUD operations (create, read, update, delete)
20- Configure appointment drag-and-drop or resizing
21- Work with resources or grouping
22- Set up timezones or localization
23- Customize Scheduler appearance or behavior
24- Handle events and callbacks
25- Persist state or manage data binding
26- Enable accessibility features
27- Export or print scheduler data
28- Set up virtual scrolling for large datasets
29- Use clipboard copy, cut, or Paste features
30- Configure custom toolbar
31
32## Component Overview
33
34The Syncfusion Blazor Scheduler is a comprehensive calendar component that allows you to:
35- Display appointments in multiple views (Day, Week, Month, Timeline, Agenda, Year)
36- Manage appointments with full CRUD operations and complete control
37- Support recurring events with iCalendar-compatible recurrence rules
38- Enable drag-and-drop and resizing functionality for intuitive scheduling
39- Handle multiple resources and flexible grouping models
40- Support timezone-aware appointments with IANA timezone conversion
41- Customize appointment appearance with templates, EventRendered events, and CSS classes
42- Prevent or customize overlapping appointments (AllowOverlap property)
43- Configure blocking time slots and read-only appointments
44- Display interactive tooltips with custom templates
45- Persist state and manage local/remote data binding
46- Filter, retrieve, and refresh appointments dynamically
47- Provide keyboard navigation, accessibility (WCAG 2.2), and RTL support
48
49## Documentation and Navigation Guide
50
51### Getting Started
52📄 **Read:** [references/getting-started.md](references/getting-started.md)
53- Installation via NuGet packages
54- Setting up Blazor project
55- Adding required namespaces and services
56- Basic component initialization
57- First minimal working example
58
59### Appointments and Event Fields
60📄 **Read:** [references/appointments.md](references/appointments.md)
61- Built-in appointment fields (Id, Subject, StartTime, EndTime, Location, Description, Timezone, etc.)
62- Custom field mapping, binding, and validation
63- Event field settings with labels, defaults, and validation rules
64- Adding custom fields to appointments
65- Normal, spanned, all-day, and blocked events
66- Read-only appointments and slot availability
67- Overlapping event customization and prevention (AllowOverlap)
68
69### Appointment Appearance and Management
70📄 **Read:** [references/appointment-appearance.md](references/appointment-appearance.md)
71- Appointment appearance with EventRendered styling
72- Tooltips (built-in, custom templates, conditional)
73- Appointment selection and retrieval (GetEventsAsync, GetCurrentViewEvents)
74- Filtering appointments with Query
75- Refresh appointments with RefreshEventsAsync
76
77### Appointment Customization
78📄 **Read:** [references/appointment-customization.md](references/appointment-customization.md)
79- Template-based event customization
80- EventRendered event for styling
81- CssClass property for bulk styling
82- Custom attributes and classes
83- Event appearance modifications
84- Tooltip customization with templates
85
86### Drag and Drop
87📄 **Read:** [references/appointment-drag-and-drop.md](references/appointment-drag-and-drop.md)
88- Enable/disable drag-and-drop functionality
89- Single and multi-drag operations
90- Drag event handling and prevention
91- Scroll control during drag
92- Navigation trigger on edges
93- Drag intervals and external sources
94- Opening editor on drag completion
95
96### Resizing Events
97📄 **Read:** [references/appointment-resizing.md](references/appointment-resizing.md)
98- Enable/disable resizing functionality
99- Scroll control during resize
100- Scroll speed configuration
101- Resize time intervals
102- Preventing specific resizing actions
103
104### Scheduler Views
105📄 **Read:** [references/views.md](references/views.md)
106- 12 available view modes (Day, Week, WorkWeek, Month, Agenda, MonthAgenda, TimelineDay, TimelineWeek, TimelineWorkWeek, TimelineMonth, TimelineYear, Year)
107- Setting current/active view with @bind-CurrentView property
108- View configuration properties table
109- ScheduleView component properties (Option, IsSelected, DateFormat, Readonly, ShowWeekend, WorkDays, etc.)
110- Day view with hourly time slots and single-day display
111- Day view with Interval property for multiple consecutive days (2-day, 3-day views)
112- Week view displaying 7-day week (Sunday-Saturday) with all appointments
113- Week view with FirstDayOfWeek customization (1=Monday, 0=Sunday)
114- Work Week view showing only working days (Mon-Fri by default)
115- Custom working days per view with WorkDays int array (0=Sun, 1=Mon, etc.)
116- Month view with full month calendar grid layout
117- Month view with MaxEventsPerRow property to limit/expand events display
118- Agenda view displaying upcoming events in chronological list format (7 days default)
119- Agenda view with AgendaDaysCount property for custom date range
120- Agenda view with AllowVirtualScrolling for large datasets
121- Month Agenda view combining month calendar with agenda list below
122- Timeline Day view showing single day in horizontal layout
123- Timeline Week view showing 7-day week horizontally
124- Timeline Work Week view showing working days horizontally
125- Timeline Month view showing entire month horizontally
126- Timeline Year view showing full year horizontally with Orientation customization
127- Year view displaying mini-calendar with month selection and appointment indicators
128
129### View Configuration and Customization
130📄 **Read:** [references/view-configuration-and-customization.md](references/view-configuration-and-customization.md)
131- View-specific configuration properties table
132- Limit concurrent appointment labels with MaxEventStack in Day, Week, and WorkWeek views
133- Extending view intervals with Interval property (3-day, 2-week, quarterly, annual views)
134- Display Name customization for extended views with DisplayName property
135- Setting specific start and end hours with StartHour/EndHour (e.g., "09:00"-"18:00")
136- Time range limiting to business hours only
137- Hide weekends in calendar views using ShowWeekend="false"
138- Display ISO week numbers with ShowWeekNumber="true"
139- Readonly mode per view using Readonly="true" to prevent CRUD operations
140- View-specific templates (EventTemplate, DateHeaderTemplate, CellTemplate, etc.)
141- Event template customization per view for different rendering
142- Date header template customization per view
143- Cell templates and custom cell content per view
144- DateFormat customization per view for date display
145- Switching views programmatically with CurrentView property binding
146- View navigation via header toolbar with built-in view buttons
147- Resource header templates per view for grouped schedules
148- Resource-based view configuration and display options
149
150### Events and Interactions
151📄 **Read:** [references/events.md](references/events.md)
152- All Scheduler events (ActionBegin, ActionCompleted, Created, Destroyed, etc.)
153- Event arguments and action types
154- Two-way binding and callbacks
155- DataBinding and DataBound events
156- Event selection and retrieval
157
158### Recurring Events
159📄 **Read:** [references/recurring-events.md](references/recurring-events.md)
160- Recurrence rule syntax and iCalendar format
161- FREQ, INTERVAL, COUNT, UNTIL properties
162- BYDAY, BYMONTHDAY, BYMONTH configurations
163- Creating recurring events
164- Exception dates and editing occurrences
165- Edit/delete following events
166
167### CRUD Operations
168📄 **Read:** [references/crud-actions.md](references/crud-actions.md)
169- Create appointments via editor or AddEventAsync
170- Inline appointment creation
171- Update appointments with proper validation
172- Delete single or multiple appointments
173- Server-side database operations
174- Restricting actions based on criteria
175
176### Data Binding
177📄 **Read:** [references/data-binding.md](references/data-binding.md)
178- Local data binding with List collections
179- Remote data binding with HTTP services
180- DataSource configuration
181- Query-based filtering
182- Refresh appointments dynamically
183- DataSource property and event settings
184- Load data on demand
185- Set custom headers for authentication/authorization
186
187### Customization and Styling
188📄 **Read:** [references/scheduler-styling.md](references/scheduler-styling.md)
189- CSS customization
190- Custom styling with CssClass
191- Style overrides for components
192- Responsive design adjustments
193
194### Cell Customization
195📄 **Read:** [references/cell-customization.md](references/cell-customization.md)
196- Cell dimensions in vertical and timeline views
197- CellTemplate for custom content
198- CellHeaderTemplate for headers
199- OnRenderCell event for dynamic styling
200- Weekend and specific date styling
201- MinDate and MaxDate restrictions
202- Multi-cell and multi-row selection
203
204### Header Bar and Toolbar Customization
205📄 **Read:** [references/header-bar.md](references/header-bar.md)
206- ShowHeaderBar property to display or hide header
207- ScheduleToolBar component for toolbar configuration
208- Built-in toolbar items (ScheduleToolBarPrevious, Next, DateRange, Today, Views, NewEvent)
209- ScheduleToolBarCustom for adding custom elements to toolbar
210- ItemType options for custom items (Button, Input, Spacer, Separator)
211- Creating custom toolbar with buttons for export, print, and other actions
212- Adding dropdown controls to toolbar for filtering by resources
213- Real-world toolbar configuration example with owner resource filtering
214- EnableAdaptiveUI property for responsive/mobile-friendly layout
215- Toolbar consolidation and "New Event" button in adaptive mode
216- DateHeaderTemplate for customizing date cells in day/week views
217- OnRenderCell event with ElementType.DateHeader for dynamic date header styling
218- Weekend and special date styling in date header
219- DateRangeTemplate for customizing displayed date range text
220- TimelineYear view header customization with DayHeaderTemplate
221- MonthHeaderTemplate for month headers in TimelineYear
222- HeaderIndentTemplate for customizing left indent area in timeline views
223- Vertical and horizontal orientation in timeline views
224- Resource-grouped view headers
225- Combining multiple templates for advanced header layouts
226
227### Header Rows
228📄 **Read:** [references/header-rows.md](references/header-rows.md)
229- ScheduleHeaderRow component structure and properties
230- HeaderRowType enum options (Year, Month, Week, Date, Hour)
231- View compatibility for each header row type
232- Basic multi-level header row setup
233- Year and month header rows for long-range timelines
234- Week number header rows for weekly organization
235- Displaying complete year timeline with Interval=12
236- Day and hour header rows for detailed scheduling
237- Customizing header rows with Template property
238- Template context and accessing Date in templates
239- Header row styling with CSS classes
240- Color customization for different header levels
241- Header rows with resource-grouped views
242- Combining multiple header rows (2-5 levels)
243- Order and hierarchy guidelines for header rows
244- Localization in header rows by culture
245- ISO week number calculations and display
246- Common patterns (quarterly, weekly, daily, resource views)
247- Performance considerations with multiple rows
248
249### Editor Template
250📄 **Read:** [references/editor-template.md](references/editor-template.md)
251- Default editor window and double-click behavior
252- Customizing editor field labels with Title property
253- Field validation using ValidationRules (Required, RegexPattern, MinLength, MaxLength)
254- Editing default time duration with OnPopupOpen event
255- Preventing editor/quick popups by canceling PopupOpenEventArgs
256- Popup types (Editor, QuickInfo, EditEventInfo, ViewEventInfo, EventContainer, etc.)
257- Opening editor window manually with OpenEditorAsync method
258- Creating completely custom editor using EditorTemplate
259- Customizing editor header and footer with EditorHeaderTemplate/EditorFooterTemplate
260- Adding resource dropdown options to editor template
261
262### Editor Advanced Customization
263📄 **Read:** [references/editor-advanced-customization.md](references/editor-advanced-customization.md)
264- Adding recurrence pattern fields to editor template
265- Applying DataAnnotations validation in editor templates
266- Quick info popups on single-click (cell and event)
267- Customizing quick popup appearance with ScheduleQuickInfoTemplates
268- Quick popup template types (Cell, Event, Both) for different popup scenarios
269
270### Quick Popup and Validation
271📄 **Read:** [references/quick-popup-and-validation.md](references/quick-popup-and-validation.md)
272- Quick popup customization combinations
273- Custom header, content, footer for quick popups
274- Disabling quick popups with ShowQuickInfo or OnPopupOpen event
275- Multiple cell selection and QuickInfoOnSelectionEnd property
276- AllowMultiRowSelection for multi-day selection behavior
277- More events indicator popup when cell exceeds capacity
278- Preventing more events popup with MoreEventsClicked event
279- CloseQuickInfoPopupAsync method to programmatically close popups
280
281### Clipboard Operations
282📄 **Read:** [references/clipboard.md](references/clipboard.md)
283- Copy/paste appointments
284- Copy event data to clipboard
285- Paste handling and validation
286- Multi-appointment operations
287- Keyboard navigation shortcuts
288
289### Resources and Grouping
290📄 **Read:** [references/resources.md](references/resources.md)
291- ScheduleResource component structure and generic parameters
292- Resource field mapping (Field, TextField, IdField, ColorField, etc.)
293- Complete resource fields reference table
294- Local resource data binding with List collections
295- Binding resources with ExpandoObject for dynamic models
296- Binding resources with DynamicObject custom implementation
297- Binding resources with ObservableCollection for dynamic updates
298- Multiple resources without visual grouping (AllowMultiple property)
299- Single-level resource grouping with ScheduleGroup
300- Multi-level hierarchical resource grouping (GroupIDField)
301
302### Resource Grouping and Customization
303📄 **Read:** [references/resource-grouping-and-customization.md](references/resource-grouping-and-customization.md)
304- One-to-One grouping with ByGroupID="false"
305- Grouping resources by date (ByDate="true") in calendar views
306- Shared events across resources (AllowGroupEdit="true")
307- Simple resource header customization with templates
308- Multiple column resource headers for timeline views
309- Expand and collapse resources with ExpandedField
310- Resource header tooltips with HeaderTooltipTemplate
311- Resource color selection with ResourceColorField
312- Custom working hours per resource (StartHourField, EndHourField)
313- Custom working days per resource (WorkDaysField)
314
315### Timescale Configuration
316📄 **Read:** [references/timescale.md](references/timescale.md)
317- Timescale slots and intervals
318- Major and minor timescale settings
319- Custom timescale format
320- Time display options
321- Work hours configuration
322
323### Working Hours
324📄 **Read:** [references/working-hours.md](references/working-hours.md)
325- Setting working hours range
326- Work hour highlighting
327- Highlight color and styling
328- Business hours for resources
329- Non-working hour customization
330
331### Timezones
332📄 **Read:** [references/timezone.md](references/timezone.md)
333- IANA timezone support
334- StartTimezone and EndTimezone fields
335- Timezone conversion
336- Daylight saving time handling
337- Timezone-aware scheduling
338
339### Localization
340📄 **Read:** [references/localization.md](references/localization.md)
341- Setting date format (DateFormat property)
342- Time mode configuration (TimeFormat property)
343- Right-to-left (RTL) support (EnableRtl property)
344
345### Virtual Scrolling
346📄 **Read:** [references/virtual-scrolling.md](references/virtual-scrolling.md)
347- Virtual scrolling overview and when to use (100+ resources, 5,000+ appointments)
348- Enable AllowVirtualScrolling in timeline views (TimelineDay, TimelineWeek, TimelineWorkWeek, TimelineMonth, TimelineYear)
349- Virtual scrolling in Agenda view for large upcoming event lists
350- Virtual scrolling in Timeline Month view with resource grouping
351- Virtual scrolling benefits (reduced memory, smooth scrolling, DOM optimization)
352- VirtualResourceCount property to control visible resources at once (default 30)
353- VirtualResourceCount configuration for different screen sizes (20-50 standard, 100+ for large displays)
354- Virtual scrolling with 300+ resources and sparse appointments
355- Virtual scrolling with resource grouping and hierarchical organization
356- Virtual scrolling combined with custom templates (ResourceHeaderTemplate, EventTemplate)
357- Resource header templates with virtual scrolling for metadata display
358- Event templates with virtual scrolling for custom event rendering
359- Lazy loading appointments with EnableLazyLoading="true" property
360- Lazy loading on-demand approach for viewport-based data retrieval
361- Lazy loading with server-side appointment filtering by ResourceId
362- Server-side controller implementation for lazy loading (ResourceId query params)
363- Lazy loading parameters (StartDate, EndDate, ResourceId filtering)
364- Virtual scrolling with DataManager for remote data binding
365- Virtual scrolling and lazy loading combined for massive datasets
366- Performance optimization with virtual scrolling (VirtualResourceCount tuning)
367- Performance optimization with sparse data (not all resources have events daily)
368- Performance optimization with EnableMaxHeight, AllowKeyboard settings
369- CSS optimization for virtual scrolling (will-change property, min-height)
370- Virtual scrolling limitations (not in Month/Year/MonthAgenda views)
371- Virtual scrolling limitations (limited support in TimelineYear Vertical Orientation)
372- When virtual scrolling is NOT beneficial (small datasets <100 resources)
373- Combining virtual scrolling with MaxEventsPerRow for cell optimization
374- Virtual scrolling with scroll-on-demand and automatic resource loading
375- Memory management in virtual scrolling scenarios
376- Testing virtual scrolling performance with actual large datasets
377
378### State Persistence
379📄 **Read:** [references/state-persistence.md](references/state-persistence.md)
380- Persisted properties (view, date)
381- Local storage integration
382
383### Exporting and Importing
384📄 **Read:** [references/exporting.md](references/exporting.md)
385- Excel export to XLSX/CSV using ExportToExcelAsync
386- Exporting with custom fields and field filtering
387- Exporting recurring event occurrences as individual records (IncludeOccurrences)
388- Exporting custom event data subset with CustomData option
389- Customizing column headers with ExportFieldInfo
390- Export with custom filename (FileName property)
391- Excel file formats (XLSX vs CSV via ExportType)
392- Export with specific date format (DateFormat option)
393- Customize Excel sheet before export with OnExcelExporting event
394- ExcelExport API for cell formatting, headers, styles
395- ICS calendar export to .ics format (Outlook, Google Calendar compatible)
396- ICS export with custom filename
397
398### ICS Import and Printing
399📄 **Read:** [references/ics-import-and-printing.md](references/ics-import-and-printing.md)
400- Importing events from external ICS files with ImportICalendarAsync
401- File uploader integration for importing ICS files
402- Merging imported events with existing appointments
403- PrintAsync method without options (default print)
404- PrintAsync method with PrintOptions (custom width/height)
405- Print current view with all visible appointments
406
407### Dimensions
408📄 **Read:** [references/dimensions.md](references/dimensions.md)
409- Height and width configuration
410- Responsive sizing
411- Auto-height for rows
412- Cell and column dimensions
413- Container constraints
414
415### Row Auto Height
416📄 **Read:** [references/row-auto-height.md](references/row-auto-height.md)
417- Enable/disable auto height
418- Row height calculation
419- Content overflow handling
420- Responsive row sizing
421
422### Performance and WebAssembly
423📄 **Read:** [references/webassembly-performance.md](references/webassembly-performance.md)
424- Avoid unnecessary component renders using `@key` directive
425- Use PreventRender to reduce re-renders after scheduler events
426
427---
428
429## Quick Start Example
430
431```cshtml
432@using Syncfusion.Blazor.Schedule
433
434<SfSchedule TValue="AppointmentData" Height="650px" @bind-SelectedDate="@CurrentDate">
435 <ScheduleEventSettings DataSource="@DataSource"></ScheduleEventSettings>
436 <ScheduleViews>
437 <ScheduleView Option="View.Day"></ScheduleView>
438 <ScheduleView Option="View.Week"></ScheduleView>
439 <ScheduleView Option="View.WorkWeek"></ScheduleView>
440 <ScheduleView Option="View.Month"></ScheduleView>
441 <ScheduleView Option="View.Agenda"></ScheduleView>
442 </ScheduleViews>
443</SfSchedule>
444
445@code{
446 DateTime CurrentDate = new DateTime(2026, 3, 24);
447 List<AppointmentData> DataSource = new List<AppointmentData>
448 {
449 new AppointmentData
450 {
451 Id = 1,
452 Subject = "Conference",
453 StartTime = new DateTime(2026, 3, 24, 9, 30, 0),
454 EndTime = new DateTime(2026, 3, 24, 11, 0, 0)
455 }
456 };
457
458 public class AppointmentData
459 {
460 public int Id { get; set; }
461 public string Subject { get; set; }
462 public string Location { get; set; }
463 public DateTime StartTime { get; set; }
464 public DateTime EndTime { get; set; }
465 public string Description { get; set; }
466 public bool IsAllDay { get; set; }
467 public string RecurrenceRule { get; set; }
468 public string RecurrenceException { get; set; }
469 public Nullable<int> RecurrenceID { get; set; }
470 }
471}
472```
473
474---
475
476## Common Patterns
477
478### 1. **CRUD Operations**
479- **Create:** Use `AddEventAsync()` method or double-click cells for editor
480- **Read:** Use `GetEventsAsync()` or `GetCurrentViewEvents()` or `GetBlockEventsAsync()`
481- **Update:** Modify appointment and use `SaveEventAsync()`
482- **Delete:** Use `DeleteEventAsync()` method or delete key for multi-select
483- **Check availability:** Use `IsSlotAvailableAsync()` to prevent overlaps
484
485### 2. **Appointment Management**
486- **Readonly appointments:** Set `IsReadonly = true` on individual events or use `Readonly` property
487- **Block time slots:** Set `IsBlock = true` to prevent scheduling on those slots
488- **Overlapping control:** Use `AllowOverlap="false"` to prevent overlaps
489- **Custom fields:** Add custom properties beyond built-in fields (Status, Priority, etc.)
490- **Field mapping:** Use `ScheduleField` tags for custom field names
491
492### 3. **Appearance Customization**
493- **Templates:** Use `<Template>` for custom appointment HTML
494- **EventRendered:** Apply dynamic CSS classes based on data
495- **CssClass:** Apply predefined CSS classes from appointment data
496- **Tooltips:** Enable with `EnableTooltip="true"` and customize with `TooltipTemplate`
497- **Cell styling:** Use `OnRenderCell` event or `CellTemplate`
498
499### 4. **Event Handling**
500- **ActionBegin:** Intercept before operations (validate, cancel, check overlap)
501- **ActionCompleted:** Execute after successful operations
502- **EventRendered:** Customize appointment appearance
503- **OnDragStart / OnResizeStart:** Control drag/resize behavior
504- **TooltipOpening:** Conditionally show/hide tooltips
505
506### 5. **View Management**
507- Set `CurrentView` property to change active view
508- Configure each view independently with view-specific properties
509- Use `DisplayName` for custom view labels
510- Extend views with `Interval` property (e.g., 3-day view)
511
512### 6. **Recurring Events**
513- Use standard iCalendar `RecurrenceRule` format (FREQ, INTERVAL, COUNT, UNTIL)
514- Add `RecurrenceException` dates to exclude occurrences
515- Use `RecurrenceID` for edited occurrences
516- Support daily, weekly, monthly, yearly patterns with FREQ property
517
518### 7. **Data Binding**
519- Local: Bind `DataSource` to List<AppointmentData>
520- Remote: Bind to HTTP service returning data
521- Use `Query` property for server-side filtering
522- Call `RefreshEventsAsync()` to reload data without full refresh
523
524---
525
526## Key Props and Configuration
527
528| Property | Purpose | Example |
529|----------|---------|---------|
530| `Height` | Scheduler height in pixels/percentage | `Height="650px"` |
531| `Width` | Scheduler width in pixels/percentage | `Width="100%"` |
532| `CurrentView` | Active view (Day, Week, Month, etc.) | `CurrentView="View.Week"` |
533| `SelectedDate` | Currently displayed date | `@bind-SelectedDate="@date"` |
534| `AllowDragAndDrop` | Enable/disable drag functionality | `AllowDragAndDrop="true"` |
535| `AllowResizing` | Enable/disable resize functionality | `AllowResizing="true"` |
536| `AllowMultiDrag` | Allow dragging multiple appointments | `AllowMultiDrag="true"` |
537| `AllowOverlap` | Prevent overlapping appointments | `AllowOverlap="false"` |
538| `AllowInline` | Quick inline creation on cell click | `AllowInline="true"` |
539| `Readonly` | View-only mode (no CRUD) | `Readonly="true"` |
540| `MinDate` | Minimum date boundary | `MinDate="new DateTime(2026,1,1)"` |
541| `MaxDate` | Maximum date boundary | `MaxDate="new DateTime(2026,12,31)"` |
542| `CssClass` | Custom CSS class for styling | `CssClass="custom-scheduler"` |
543| `EnableMaxHeight` | Appointments occupy full cell height | `EnableMaxHeight="true"` |
544| `EnableIndicator` | Show indicator for multiple appointments | `EnableIndicator="true"` |
545| `EnableAutoRowHeight` | Auto-adjust row heights for content | `EnableAutoRowHeight="true"` |
546
547---
548
549## Common Use Cases
550
5511. **Employee Scheduling** - Multiple resources with drag-drop and approval workflow
5522. **Meeting Rooms Reservation** - Resource-based booking with timezone support
5533. **Doctor's Appointments** - Recurring slots with patient blocking
5544. **Project Task Management** - Timeline views with progress tracking
5555. **Educational Timetable** - Multiple classes with resource grouping
5566. **Shift Management** - Working hours, shift patterns with recurrence
5577. **Event Calendar** - Public events with recurrence and filtering
5588. **Field Service Dispatch** - Mobile-friendly with offline support
559
560---
561
562**Next Steps:** Read the appropriate reference file based on your use case to understand specific features and implementation details.