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