Implementing Syncfusion Blazor Gantt Chart
When to Use This Skill
Use this skill when the user needs to:
- Implement project scheduling interfaces similar to Microsoft Project with visual timeline and task management
- Display hierarchical task structures with parent-child relationships, dependencies, and progress tracking
- Enable interactive timeline editing through drag-and-drop taskbars, resize operations, and dependency linking
- Manage project resources including personnel allocation, workload tracking, and overallocation detection
- Configure complex timelines with custom zoom levels, working hours, holidays, time zones, and duration units
- Export project data to Excel, CSV, or PDF formats with customizable layouts and styling
- Handle remote data through Entity Framework, Dapper, custom adaptors, or REST API connections
- Implement critical path analysis for identifying tasks that impact project completion dates
- Create resource views showing task allocation and utilization across team members and equipment
This skill provides comprehensive guidance for the SfGantt<TValue> component, covering all aspects from basic setup through advanced features like split tasks, baseline tracking, and custom PDF exports.
Documentation and Navigation Guide
This skill is organized into 14 major sections. Each section contains focused reference files covering specific features. Use this navigation guide to identify which reference to read based on the user's needs.
1. Getting Started
When to read: Initial setup, installation, platform-specific configuration
📄 Read: references/getting-started-webassembly.md
- NuGet package installation for Blazor WebAssembly
- Basic component setup and registration
- CSS theme imports and configuration
- First minimal Gantt chart example
- Task data model and field mapping
📄 Read: references/getting-started-server.md
- Blazor Server-specific setup and services
- Service registration in Program.cs
- Component initialization differences
2. Data Binding and Remote Data
When to read: Setting up data sources, connecting to databases, custom data adaptors
📄 Read: references/data-binding-and-field-mapping.md
- Hierarchical and self-referential data structures
- GanttTaskFields configuration and mapping
- Required vs optional fields
- SfDataManager integration
- Load-on-demand for large datasets
📄 Read: references/remote-data-adaptors.md
- UrlAdaptor for REST APIs
- Custom DataAdaptor implementation
- Handling CRUD, search, filter, sort operations
- Injecting services and passing parameters
3. Task Management
When to read: Creating, editing, deleting tasks, dependencies, scheduling, undo/redo, critical path
📄 Read: references/task-scheduling-and-hierarchy.md
- Nested hierarchical vs self-referential (ParentID) data structures
- Task types: parent (rollup), child (work item), milestone (zero-duration), unscheduled
- Auto-scheduling and manual scheduling approaches
- Duration units: Day, Hour, Minute
- Hierarchy effects: parent rollup, expand/collapse, indent/outdent
📄 Read: references/task-crud-operations.md
- Enable editing — GanttEditSettings (AllowAdding, AllowEditing, AllowDeleting, AllowTaskbarEditing)
- Edit modes — Auto, Dialog, Taskbar
- Adding tasks via toolbar, context menu, or programmatic API
- Dialog customization — expose only selected fields in the edit form
- Remote CRUD — InsertUrl, UpdateUrl, RemoveUrl, BatchUrl
- Delete behavior — cascade rules and child handling
📄 Read: references/task-dependencies-and-validation.md
- Dependency types: FS, SS, FF, SF
- Predecessor field mapping via GanttTaskFields.Dependency
- Dependency string format (e.g.,
3FS, 5SS+2d)
- Circular dependency detection
- Auto-scheduling interaction with dependency changes
📄 Read: references/critical-path-and-analysis.md
- EnableCriticalPath — highlights critical tasks in red automatically
- GanttCriticalPathSettings.SlackValue — widen critical zone to near-critical tasks
- "CriticalPath" toolbar item — user-facing toggle
- QueryChartRowInfo + GanttTaskModel.IsCritical — custom critical taskbar color/style
- GetCriticalTasksAsync() — retrieve critical task list programmatically
- Calculation rules: progress < 100%, dependency-driven, recalculates on every change
📄 Read: references/undo-redo-and-state.md
- EnableUndoRedo + UndoRedoActions list — track 23 action types (Add, Edit, Delete, TaskbarEdit, Sort, Filter, ZoomIn/Out, Indent/Outdent, RowDragAndDrop, etc.)
- MaxUndoRedoSteps — limit history size (default: 20)
- UndoAsync() / RedoAsync() — programmatic undo/redo
- "Undo" / "Redo" toolbar items — keyboard shortcut Ctrl+Z / Ctrl+Y
- OnUndoRedo event — react after undo/redo with CanUndo/CanRedo state
- State preservation patterns — expand/collapse, selection, zoom, filters, scroll position
4. Timeline Configuration
When to read: Timeline views, zoom levels, working hours, holidays, time zones, effort tracking
📄 Read: references/timeline-configuration.md
- Single-tier vs dual-tier timeline layouts
- GanttTimelineSettings, GanttTopTierSettings, GanttBottomTierSettings
- TimelineViewMode units: Hour, Day, Week, Month, Year
- TimelineUnitSize — controls cell width / density
- Format strings for tier labels
- ProjectStartDate / ProjectEndDate for visible date range
📄 Read: references/zooming-and-view-control.md
- ZoomIn, ZoomOut, ZoomToFit toolbar items
- ZoomToFit — fits the entire schedule into the visible viewport
- Programmatic zoom via toolbar or code
- Recommended defaults: day/week for operational, week/month for roadmap views
📄 Read: references/working-time-holidays-timezone.md
- DayWorkingTime — define working hours per day (e.g., 8-hour day)
- WorkWeek — specify which days are working days
- GanttHolidays / GanttHoliday — non-working dates with From/To/Label
- Timezone considerations for multi-region teams
- Impact on task duration calculations and auto-scheduling
📄 Read: references/work-and-effort-tracking.md
- Work field mapping in GanttTaskFields.Work
- Task types: FixedDuration, FixedWork, FixedUnit
- Work = Duration × WorkingHoursPerDay × (Unit / 100)
- Resource allocation units affect work calculation
- WorkUnit property (Hour, Day, Minute)
5. Resources
When to read: Resource assignment, resource views, overallocation detection, assignment CRUD
📄 Read: references/resources-and-allocation.md
- GanttResource — DataSource, Id, Name, MaxUnits, Group field mappings
- GanttAssignmentFields — PrimaryKey, TaskID, ResourceID, Units
- ResourceData model (ResourceId, ResourceName, MaxUnit) + AssignmentModel (PrimaryId, TaskID, ResourceId, Unit)
- Assign resources via cell editing (GanttResourceColumn), dialog, or programmatically
- AddResourceAssignmentAsync / UpdateResourceAssignmentAsync / DeleteResourceAssignmentAsync
- Task types with resources: FixedDuration, FixedWork, FixedUnit
- ViewType.ResourceView — resource-centric hierarchy (resources as parents, tasks as children)
- ShowOverallocation="true" — highlights over-allocated date ranges in resource view
- Over-allocation = daily work from all tasks > DayWorkingHours × MaxUnits / 100
- GanttLabelSettings.RightLabel="Resources" — show resource names in taskbar label
📄 Read: references/assignment-fields-and-resource-mapping.md
- GanttAssignmentFields<TValue, TAssignment> class and properties
- Resource assignment collection and foreign key relationships
- AddResourceAssignmentAsync, UpdateResourceAssignmentAsync, DeleteResourceAssignmentAsync
- Many-to-many task-resource mapping patterns
- Resource allocation units and percentage tracking
6. Task Segments and Splitting
When to read: Split tasks, task segments, interrupted schedules, paused work
📄 Read: references/segment-fields-and-split-tasks.md
- GanttSegmentFields<TValue, TSegments> — PrimaryKey, TaskID, StartDate, EndDate field mappings
- Segment data model: separate collection linked to tasks via TaskID
- SplitTaskAsync — split a task at a specified date programmatically
- MergeTaskAsync — merge segments back into a single task
- UI-based splitting via context menu or dialog
- Segment taskbar rendering — multiple connected bars with gaps
- Use cases: planned breaks, resource unavailability, approval pauses
7. Visualization
When to read: Taskbar templates, baselines, markers, labels, interactive taskbar editing
📄 Read: references/taskbar-and-templates.md
- GanttTemplates.TaskbarTemplate — custom RenderFragment for taskbar content
- GanttTooltipSettings.TaskbarTemplate — custom tooltip content
- ShowBaseline / BaselineColor / BaselineStart / BaselineEnd — planned vs actual comparison
- TaskbarHeight / RowHeight — size control
- Performance note: combine complex templates with EnableVirtualization
📄 Read: references/markers-and-labels.md
- GanttEventMarkers / GanttEventMarker — vertical timeline lines with Date, Text, CssClass
- GanttLabelSettings — LeftLabel, RightLabel, TopLabel with field name or template
- Data markers via TaskbarTemplate — conditional icons based on task properties
- Limit markers to essential dates to avoid timeline clutter
📄 Read: references/taskbar-editing.md
- AllowTaskbarEditing="true" in GanttEditSettings
- Drag to move task — updates StartDate and EndDate
- Resize left/right handle — adjusts start or end date
- Drag progress handle — updates Progress field
- TaskbarEdited event — receives TaskbarEditedEventArgs<TValue>
- OnActionBegin — validate or cancel taskbar edits via args.Cancel
8. Grid Columns
When to read: Column configuration, types, formatting, show/hide, autofit, validation, reordering, resizing, frozen columns, column menu
📄 Read: references/column-basics-and-formatting.md
- GanttColumn definition (Field, HeaderText, Width, TextAlign, Format, Type, Visible)
- Column types including DateOnly, TimeOnly, Checkbox
- Number formatting (N, C, P variants) and date formatting (custom pattern strings)
- AutoFit columns — AutoFitColumnsAsync called in DataBound event
- Show or hide columns programmatically — ShowColumnsAsync / HideColumnsAsync
- TreeColumnIndex — move expand/collapse tree icons to a different column
- HideAtMedia — responsive columns via CSS media queries
- Per-column action controls: AllowEditing, AllowFiltering, AllowSorting, AllowReordering, AllowResizing
📄 Read: references/column-interactions.md
- Column reordering — AllowReordering on SfGantt and per-column override
- Column resizing — AllowResizing, MinWidth, MaxWidth; double-click to autofit
- Frozen columns — FrozenColumns (first N) vs IsFrozen per column (not combinable)
- Freeze direction — FreezeDirection.Left / FreezeDirection.Right with IsFrozen
- Draggable freeze line — AllowFreezeLineMoving
- Column menu — ShowColumnMenu on SfGantt with required companions (AllowSorting, AllowFiltering, AllowResizing)
- Built-in column menu items: Sort Ascending, Sort Descending, AutoFit, AutoFit All, Column Chooser, Filter
- Disable column menu per column — GanttColumn.ShowColumnMenu="false"
- Column chooser — ShowColumnChooser + "ColumnChooser" toolbar item
📄 Read: references/column-validation-and-editing.md
- Enable editing — GanttEditSettings, IsPrimaryKey on key column
- Inline ValidationRules — Required, RangeLength, Range, Number, Min, Max, Messages dictionary
- Data annotation validation — [Required], [StringLength], [Range] on model class
- Custom validation attribute — inherit ValidationAttribute, override IsValid()
- Custom validator component — GanttEditSettings.Validator + ValidatorTemplateContext + ShowValidationMessage + IDisposable
- Per-column EditType — DefaultEdit, NumericEdit, DatePickerEdit, DateTimePickerEdit, BooleanEdit, DropDownEdit
- Note: validation not supported for Resource column
9. Rows and Selection
When to read: Row operations, cell/row selection modes
📄 Read: references/rows-and-height.md
- RowHeight configuration
- AutoFitRows feature
- Row template customization
- Row-level styling
📄 Read: references/selection-modes.md
- SelectionSettings (Mode, Type, CellSelectionMode)
- Row selection (Single/Multiple)
- Cell selection (Box/Flow/BoxWithBorder)
- Programmatic selection APIs (SelectRow, SelectCell)
10. Interactions
When to read: User interactions, filtering, sorting, searching
📄 Read: references/filtering-and-search.md
- FilterSettings (Type: Menu, Excel)
- FilterHierarchyMode (Parent, Child, Both, None)
- Search functionality (SearchSettings)
- Column-level filtering
📄 Read: references/sorting-operations.md
- AllowSorting configuration
- Single and multi-column sorting
- SortSettings (Columns collection)
- Programmatic sorting APIs
📄 Read: references/context-menu-and-toolbar.md
- Toolbar built-in items (18 items) and custom items with Align support
- Mixed built-in + custom toolbar using List<Object>
- Enable/disable toolbar items dynamically via EnableItems method
- Context menu — EnableContextMenu, built-in items, custom items, sub-menus
- Disable context menu for specific columns via ContextMenuOpen event
- ContextMenuItemClicked event for custom item handling
📄 Read: references/touch-and-interaction-modes.md
- Touch interaction support
- EnableTouch property
- Splitter for resizing grid/chart panes
- SplitterSettings configuration
📄 Read: references/clipboard-and-accessibility.md
- Copy/paste functionality
- Clipboard module integration
- Keyboard navigation
- Accessibility features
11. Performance
When to read: Optimization strategies, large datasets
📄 Read: references/virtualization-and-performance.md
- EnableRowVirtualization for large datasets
- Row and column virtualization
- Frozen columns (FrozenColumns property)
- WebAssembly performance optimization tips
- Best practices for handling 10,000+ tasks
12. Export
When to read: PDF and Excel export features
📄 Read: references/pdf-export.md
- PdfExport() method
- PdfExportProperties configuration
- Multi-page PDF export
- Header and footer customization
- Page size and styling in PDF
- Template-based PDF export
📄 Read: references/excel-export.md
- ExcelExport() method
- ExcelExportProperties configuration
- Column formatting in Excel
- Hierarchical data export
- Custom cell styling
13. API Reference
When to read: Detailed API documentation lookup
📄 Read: references/gantt-methods-properties.md
- SfGantt main component
- GanttTaskFields mapping
- GanttColumn configuration
- GanttResource properties
- GanttSegment for task splitting
📄 Read: references/api-settings-classes.md
- GanttEditSettings (AllowAdding, AllowEditing, AllowDeleting, Mode)
- GanttSelectionSettings (Mode, Type, CellSelectionMode)
- GanttFilterSettings (Type, HierarchyMode)
- GanttSortSettings and GanttSearchSettings
- GanttTimelineSettings and GanttSplitterSettings
📄 Read: references/api-event-args.md
- GanttActionEventArgs
- BeforeTooltipRenderEventArgs
- BeforeCopyEventArgs
- Other event argument classes
📄 Read: references/api-enums-and-types.md
- EditMode (Auto, Dialog, Taskbar)
- DependencyType (FS, SF, FF, SS)
- DurationUnit (Day, Hour, Minute)
- FilterType, ViewType, GridLine enums
- Other enum types
Quick Start Example
@page "/gantt"
@using Syncfusion.Blazor.Gantt
<SfGantt DataSource="@TaskCollection" Height="450px" Width="100%">
<GanttTaskFields Id="TaskId"
Name="TaskName"
StartDate="StartDate"
EndDate="EndDate"
Duration="Duration"
Progress="Progress"
ParentID="ParentId"
Dependency="Predecessor">
</GanttTaskFields>
</SfGantt>
@code {
private List<TaskData> TaskCollection { get; set; }
protected override void OnInitialized()
{
TaskCollection = new List<TaskData>
{
new TaskData { TaskId = 1, TaskName = "Project Initiation", StartDate = new DateTime(2024, 04, 01), EndDate = new DateTime(2024, 04, 05), Progress = 100 },
new TaskData { TaskId = 2, TaskName = "Identify Site location", StartDate = new DateTime(2024, 04, 01), Duration = 4, Progress = 50, ParentId = 1 },
new TaskData { TaskId = 3, TaskName = "Perform Soil test", StartDate = new DateTime(2024, 04, 01), Duration = 3, Progress = 70, Predecessor = "2", ParentId = 1 },
};
}
public class TaskData
{
public int TaskId { get; set; }
public string TaskName { get; set; }
public DateTime StartDate { get; set; }
public DateTime? EndDate { get; set; }
public int? Duration { get; set; }
public int Progress { get; set; }
public int? ParentId { get; set; }
public string Predecessor { get; set; }
}
}
Common Patterns
Pattern 1: Full CRUD with Dialog Editing
<SfGantt DataSource="@TaskCollection" Toolbar="@ToolbarItems">
<GanttTaskFields Id="TaskId" Name="TaskName" StartDate="StartDate"
EndDate="EndDate" Duration="Duration" Progress="Progress"
ParentID="ParentId" Dependency="Predecessor">
</GanttTaskFields>
<GanttEditSettings AllowAdding="true"
AllowEditing="true"
AllowDeleting="true"
AllowTaskbarEditing="true"
Mode="EditMode.Dialog">
</GanttEditSettings>
</SfGantt>
@code {
private List<string> ToolbarItems = new List<string> { "Add", "Edit", "Delete" };
}
Pattern 2: Critical Path with Resource Allocation
<SfGantt DataSource="@TaskCollection"
Resources="@ResourceCollection"
EnableCriticalPath="true">
<GanttTaskFields Id="TaskId" Name="TaskName" StartDate="StartDate"
EndDate="EndDate" Duration="Duration"
ResourceInfo="Resources" Work="Work">
</GanttTaskFields>
<GanttResource DataSource="@ResourceCollection"
Id="ResourceId"
Name="ResourceName">
</GanttResource>
<GanttCriticalPathSettings SlackValue="1"></GanttCriticalPathSettings>
</SfGantt>
Pattern 3: Remote Data with Entity Framework
<SfGantt TValue="TaskData">
<SfDataManager Adaptor="Adaptors.UrlAdaptor" Url="api/gantt"></SfDataManager>
<GanttTaskFields Id="TaskId" Name="TaskName" StartDate="StartDate"
EndDate="EndDate" Duration="Duration" ParentID="ParentId">
</GanttTaskFields>
</SfGantt>
Pattern 4: Export with Custom Styling
<SfGantt @ref="GanttRef"
DataSource="@TaskCollection"
AllowPdfExport="true"
AllowExcelExport="true"
Toolbar="@ToolbarItems">
<GanttTaskFields Id="TaskId" Name="TaskName" StartDate="StartDate" EndDate="EndDate">
</GanttTaskFields>
<GanttEvents TValue="TaskData"
</SfGantt>
@code {
private SfGantt<TaskData> GanttRef;
private List<string> ToolbarItems = new List<string> { "PdfExport", "ExcelExport" };
private async Task ToolbarClickHandler(ClickEventArgs args)
{
if (args.Item.Id == "PdfExport")
await GanttRef.ExportToPdfAsync();
else if (args.Item.Id == "ExcelExport")
await GanttRef.ExportToExcelAsync();
}
}
Key Configuration Points
Essential Properties
- DataSource: Task collection (hierarchical or self-referential)
- GanttTaskFields: Maps task properties (Id, Name, StartDate, Duration, ParentID, Dependency)
- Height/Width: Component dimensions
- Toolbar: Built-in actions (Add, Edit, Delete, Search, Export)
- GanttEditSettings: CRUD permissions and edit mode
Timeline Configuration
- DurationUnit: Default duration unit (Day, Hour, Minute)
- ProjectStartDate/ProjectEndDate: Timeline boundaries
- GanttTimelineSettings: Timeline tiers, format, zoom levels
- DayWorkingTime: Working hours per day
- Holidays: Non-working dates
Visual Customization
- GanttTaskbarSettings: Taskbar height and styling
- GanttLabelSettings: Left, right, top labels
- GanttTemplates: Custom taskbar, tooltip, milestone templates
- BaselineColor/ConnectorLineBackground: Visual styling
Performance Optimization
- EnableRowVirtualization: For large datasets (1000+ tasks)
- EnableColumnVirtualization: For many columns
- LoadChildOnDemand: Lazy-load child tasks
- TreeColumnIndex: Specify hierarchy column
Common Use Cases
- Project Management Dashboard: Full CRUD, dependencies, critical path, resource allocation
- Construction Scheduling: Baseline tracking, split tasks, holidays, custom working hours
- Resource Planning: Resource view, overallocation detection, work-based scheduling
- Sprint Planning: Timeline zooming, milestone tracking, progress indicators
- Manufacturing Timeline: Multi-level hierarchy, dependency validation, PDF export
Next Steps
After reviewing this navigation guide:
- For initial setup: Start with section 1 (Getting Started) based on your platform
- For data connectivity: Review section 2 (Data Binding) for your data source type
- For specific features: Navigate to the relevant section and read focused reference files
- For API details: Consult section 13 (API Reference) for properties, methods, and classes
Events reference: Event argument types are documented in references/api-event-args.md. Individual feature files (e.g., taskbar-editing.md, filtering-and-search.md, sorting-operations.md, selection-modes.md) each document the events specific to that feature with handler signatures and examples.
Each reference file provides complete implementation details, code examples, edge cases, and troubleshooting guidance for its specific topic.
1---2name: syncfusion-blazor-gantt-chart3description: Implements Syncfusion Blazor Gantt for project scheduling. Covers SfGantt, GanttTaskFields, GanttColumns, GanttEditSettings, taskbar editing, dependencies, resources, timeline, critical path, baselines, and Excel/PDF export. Applicable for Blazor Gantt charts, task scheduling, WBS, and Syncfusion.Blazor.Gantt integration.4---5
6# Implementing Syncfusion Blazor Gantt Chart
7
8## When to Use This Skill
9
10Use this skill when the user needs to:
11
12- **Implement project scheduling interfaces** similar to Microsoft Project with visual timeline and task management
13- **Display hierarchical task structures** with parent-child relationships, dependencies, and progress tracking
14- **Enable interactive timeline editing** through drag-and-drop taskbars, resize operations, and dependency linking
15- **Manage project resources** including personnel allocation, workload tracking, and overallocation detection
16- **Configure complex timelines** with custom zoom levels, working hours, holidays, time zones, and duration units
17- **Export project data** to Excel, CSV, or PDF formats with customizable layouts and styling
18- **Handle remote data** through Entity Framework, Dapper, custom adaptors, or REST API connections
19- **Implement critical path analysis** for identifying tasks that impact project completion dates
20- **Create resource views** showing task allocation and utilization across team members and equipment
21
22This skill provides comprehensive guidance for the `SfGantt<TValue>` component, covering all aspects from basic setup through advanced features like split tasks, baseline tracking, and custom PDF exports.
23
24---
25
26## Documentation and Navigation Guide
27
28This skill is organized into 14 major sections. Each section contains focused reference files covering specific features. Use this navigation guide to identify which reference to read based on the user's needs.
29
30---
31
32### 1. Getting Started
33
34**When to read:** Initial setup, installation, platform-specific configuration
35
36📄 **Read:** [references/getting-started-webassembly.md](references/getting-started-webassembly.md)
37- NuGet package installation for Blazor WebAssembly
38- Basic component setup and registration
39- CSS theme imports and configuration
40- First minimal Gantt chart example
41- Task data model and field mapping
42
43📄 **Read:** [references/getting-started-server.md](references/getting-started-server.md)
44- Blazor Server-specific setup and services
45- Service registration in Program.cs
46- Component initialization differences
47
48---
49
50### 2. Data Binding and Remote Data
51
52**When to read:** Setting up data sources, connecting to databases, custom data adaptors
53
54📄 **Read:** [references/data-binding-and-field-mapping.md](references/data-binding-and-field-mapping.md)
55- Hierarchical and self-referential data structures
56- GanttTaskFields configuration and mapping
57- Required vs optional fields
58- SfDataManager integration
59- Load-on-demand for large datasets
60
61📄 **Read:** [references/remote-data-adaptors.md](references/remote-data-adaptors.md)
62- UrlAdaptor for REST APIs
63- Custom DataAdaptor implementation
64- Handling CRUD, search, filter, sort operations
65- Injecting services and passing parameters
66
67---
68
69### 3. Task Management
70
71**When to read:** Creating, editing, deleting tasks, dependencies, scheduling, undo/redo, critical path
72
73📄 **Read:** [references/task-scheduling-and-hierarchy.md](references/task-scheduling-and-hierarchy.md)
74- Nested hierarchical vs self-referential (ParentID) data structures
75- Task types: parent (rollup), child (work item), milestone (zero-duration), unscheduled
76- Auto-scheduling and manual scheduling approaches
77- Duration units: Day, Hour, Minute
78- Hierarchy effects: parent rollup, expand/collapse, indent/outdent
79
80📄 **Read:** [references/task-crud-operations.md](references/task-crud-operations.md)
81- Enable editing — GanttEditSettings (AllowAdding, AllowEditing, AllowDeleting, AllowTaskbarEditing)
82- Edit modes — Auto, Dialog, Taskbar
83- Adding tasks via toolbar, context menu, or programmatic API
84- Dialog customization — expose only selected fields in the edit form
85- Remote CRUD — InsertUrl, UpdateUrl, RemoveUrl, BatchUrl
86- Delete behavior — cascade rules and child handling
87
88📄 **Read:** [references/task-dependencies-and-validation.md](references/task-dependencies-and-validation.md)
89- Dependency types: FS, SS, FF, SF
90- Predecessor field mapping via GanttTaskFields.Dependency
91- Dependency string format (e.g., `3FS`, `5SS+2d`)
92- Circular dependency detection
93- Auto-scheduling interaction with dependency changes
94
95📄 **Read:** [references/critical-path-and-analysis.md](references/critical-path-and-analysis.md)
96- EnableCriticalPath — highlights critical tasks in red automatically
97- GanttCriticalPathSettings.SlackValue — widen critical zone to near-critical tasks
98- "CriticalPath" toolbar item — user-facing toggle
99- QueryChartRowInfo + GanttTaskModel.IsCritical — custom critical taskbar color/style
100- GetCriticalTasksAsync() — retrieve critical task list programmatically
101- Calculation rules: progress < 100%, dependency-driven, recalculates on every change
102
103📄 **Read:** [references/undo-redo-and-state.md](references/undo-redo-and-state.md)
104- EnableUndoRedo + UndoRedoActions list — track 23 action types (Add, Edit, Delete, TaskbarEdit, Sort, Filter, ZoomIn/Out, Indent/Outdent, RowDragAndDrop, etc.)
105- MaxUndoRedoSteps — limit history size (default: 20)
106- UndoAsync() / RedoAsync() — programmatic undo/redo
107- "Undo" / "Redo" toolbar items — keyboard shortcut Ctrl+Z / Ctrl+Y
108- OnUndoRedo event — react after undo/redo with CanUndo/CanRedo state
109- State preservation patterns — expand/collapse, selection, zoom, filters, scroll position
110
111---
112
113### 4. Timeline Configuration
114
115**When to read:** Timeline views, zoom levels, working hours, holidays, time zones, effort tracking
116
117📄 **Read:** [references/timeline-configuration.md](references/timeline-configuration.md)
118- Single-tier vs dual-tier timeline layouts
119- GanttTimelineSettings, GanttTopTierSettings, GanttBottomTierSettings
120- TimelineViewMode units: Hour, Day, Week, Month, Year
121- TimelineUnitSize — controls cell width / density
122- Format strings for tier labels
123- ProjectStartDate / ProjectEndDate for visible date range
124
125📄 **Read:** [references/zooming-and-view-control.md](references/zooming-and-view-control.md)
126- ZoomIn, ZoomOut, ZoomToFit toolbar items
127- ZoomToFit — fits the entire schedule into the visible viewport
128- Programmatic zoom via toolbar or code
129- Recommended defaults: day/week for operational, week/month for roadmap views
130
131📄 **Read:** [references/working-time-holidays-timezone.md](references/working-time-holidays-timezone.md)
132- DayWorkingTime — define working hours per day (e.g., 8-hour day)
133- WorkWeek — specify which days are working days
134- GanttHolidays / GanttHoliday — non-working dates with From/To/Label
135- Timezone considerations for multi-region teams
136- Impact on task duration calculations and auto-scheduling
137
138📄 **Read:** [references/work-and-effort-tracking.md](references/work-and-effort-tracking.md)
139- Work field mapping in GanttTaskFields.Work
140- Task types: FixedDuration, FixedWork, FixedUnit
141- Work = Duration × WorkingHoursPerDay × (Unit / 100)
142- Resource allocation units affect work calculation
143- WorkUnit property (Hour, Day, Minute)
144
145---
146
147### 5. Resources
148
149**When to read:** Resource assignment, resource views, overallocation detection, assignment CRUD
150
151📄 **Read:** [references/resources-and-allocation.md](references/resources-and-allocation.md)
152- GanttResource — DataSource, Id, Name, MaxUnits, Group field mappings
153- GanttAssignmentFields — PrimaryKey, TaskID, ResourceID, Units
154- ResourceData model (ResourceId, ResourceName, MaxUnit) + AssignmentModel (PrimaryId, TaskID, ResourceId, Unit)
155- Assign resources via cell editing (GanttResourceColumn), dialog, or programmatically
156- AddResourceAssignmentAsync / UpdateResourceAssignmentAsync / DeleteResourceAssignmentAsync
157- Task types with resources: FixedDuration, FixedWork, FixedUnit
158- ViewType.ResourceView — resource-centric hierarchy (resources as parents, tasks as children)
159- ShowOverallocation="true" — highlights over-allocated date ranges in resource view
160- Over-allocation = daily work from all tasks > DayWorkingHours × MaxUnits / 100
161- GanttLabelSettings.RightLabel="Resources" — show resource names in taskbar label
162
163📄 **Read:** [references/assignment-fields-and-resource-mapping.md](references/assignment-fields-and-resource-mapping.md)
164- GanttAssignmentFields\<TValue, TAssignment\> class and properties
165- Resource assignment collection and foreign key relationships
166- AddResourceAssignmentAsync, UpdateResourceAssignmentAsync, DeleteResourceAssignmentAsync
167- Many-to-many task-resource mapping patterns
168- Resource allocation units and percentage tracking
169
170---
171
172### 6. Task Segments and Splitting
173
174**When to read:** Split tasks, task segments, interrupted schedules, paused work
175
176📄 **Read:** [references/segment-fields-and-split-tasks.md](references/segment-fields-and-split-tasks.md)
177- GanttSegmentFields\<TValue, TSegments\> — PrimaryKey, TaskID, StartDate, EndDate field mappings
178- Segment data model: separate collection linked to tasks via TaskID
179- SplitTaskAsync — split a task at a specified date programmatically
180- MergeTaskAsync — merge segments back into a single task
181- UI-based splitting via context menu or dialog
182- Segment taskbar rendering — multiple connected bars with gaps
183- Use cases: planned breaks, resource unavailability, approval pauses
184
185---
186
187### 7. Visualization
188
189**When to read:** Taskbar templates, baselines, markers, labels, interactive taskbar editing
190
191📄 **Read:** [references/taskbar-and-templates.md](references/taskbar-and-templates.md)
192- GanttTemplates.TaskbarTemplate — custom RenderFragment for taskbar content
193- GanttTooltipSettings.TaskbarTemplate — custom tooltip content
194- ShowBaseline / BaselineColor / BaselineStart / BaselineEnd — planned vs actual comparison
195- TaskbarHeight / RowHeight — size control
196- Performance note: combine complex templates with EnableVirtualization
197
198📄 **Read:** [references/markers-and-labels.md](references/markers-and-labels.md)
199- GanttEventMarkers / GanttEventMarker — vertical timeline lines with Date, Text, CssClass
200- GanttLabelSettings — LeftLabel, RightLabel, TopLabel with field name or template
201- Data markers via TaskbarTemplate — conditional icons based on task properties
202- Limit markers to essential dates to avoid timeline clutter
203
204📄 **Read:** [references/taskbar-editing.md](references/taskbar-editing.md)
205- AllowTaskbarEditing="true" in GanttEditSettings
206- Drag to move task — updates StartDate and EndDate
207- Resize left/right handle — adjusts start or end date
208- Drag progress handle — updates Progress field
209- TaskbarEdited event — receives TaskbarEditedEventArgs\<TValue\>
210- OnActionBegin — validate or cancel taskbar edits via args.Cancel
211
212---
213
214### 8. Grid Columns
215
216**When to read:** Column configuration, types, formatting, show/hide, autofit, validation, reordering, resizing, frozen columns, column menu
217
218📄 **Read:** [references/column-basics-and-formatting.md](references/column-basics-and-formatting.md)
219- GanttColumn definition (Field, HeaderText, Width, TextAlign, Format, Type, Visible)
220- Column types including DateOnly, TimeOnly, Checkbox
221- Number formatting (N, C, P variants) and date formatting (custom pattern strings)
222- AutoFit columns — AutoFitColumnsAsync called in DataBound event
223- Show or hide columns programmatically — ShowColumnsAsync / HideColumnsAsync
224- TreeColumnIndex — move expand/collapse tree icons to a different column
225- HideAtMedia — responsive columns via CSS media queries
226- Per-column action controls: AllowEditing, AllowFiltering, AllowSorting, AllowReordering, AllowResizing
227
228📄 **Read:** [references/column-interactions.md](references/column-interactions.md)
229- Column reordering — AllowReordering on SfGantt and per-column override
230- Column resizing — AllowResizing, MinWidth, MaxWidth; double-click to autofit
231- Frozen columns — FrozenColumns (first N) vs IsFrozen per column (not combinable)
232- Freeze direction — FreezeDirection.Left / FreezeDirection.Right with IsFrozen
233- Draggable freeze line — AllowFreezeLineMoving
234- Column menu — ShowColumnMenu on SfGantt with required companions (AllowSorting, AllowFiltering, AllowResizing)
235- Built-in column menu items: Sort Ascending, Sort Descending, AutoFit, AutoFit All, Column Chooser, Filter
236- Disable column menu per column — GanttColumn.ShowColumnMenu="false"
237- Column chooser — ShowColumnChooser + "ColumnChooser" toolbar item
238
239📄 **Read:** [references/column-validation-and-editing.md](references/column-validation-and-editing.md)
240- Enable editing — GanttEditSettings, IsPrimaryKey on key column
241- Inline ValidationRules — Required, RangeLength, Range, Number, Min, Max, Messages dictionary
242- Data annotation validation — [Required], [StringLength], [Range] on model class
243- Custom validation attribute — inherit ValidationAttribute, override IsValid()
244- Custom validator component — GanttEditSettings.Validator + ValidatorTemplateContext + ShowValidationMessage + IDisposable
245- Per-column EditType — DefaultEdit, NumericEdit, DatePickerEdit, DateTimePickerEdit, BooleanEdit, DropDownEdit
246- Note: validation not supported for Resource column
247
248---
249
250### 9. Rows and Selection
251
252**When to read:** Row operations, cell/row selection modes
253
254📄 **Read:** [references/rows-and-height.md](references/rows-and-height.md)
255- RowHeight configuration
256- AutoFitRows feature
257- Row template customization
258- Row-level styling
259
260📄 **Read:** [references/selection-modes.md](references/selection-modes.md)
261- SelectionSettings (Mode, Type, CellSelectionMode)
262- Row selection (Single/Multiple)
263- Cell selection (Box/Flow/BoxWithBorder)
264- Programmatic selection APIs (SelectRow, SelectCell)
265
266---
267
268### 10. Interactions
269
270**When to read:** User interactions, filtering, sorting, searching
271
272📄 **Read:** [references/filtering-and-search.md](references/filtering-and-search.md)
273- FilterSettings (Type: Menu, Excel)
274- FilterHierarchyMode (Parent, Child, Both, None)
275- Search functionality (SearchSettings)
276- Column-level filtering
277
278📄 **Read:** [references/sorting-operations.md](references/sorting-operations.md)
279- AllowSorting configuration
280- Single and multi-column sorting
281- SortSettings (Columns collection)
282- Programmatic sorting APIs
283
284📄 **Read:** [references/context-menu-and-toolbar.md](references/context-menu-and-toolbar.md)
285- Toolbar built-in items (18 items) and custom items with Align support
286- Mixed built-in + custom toolbar using List\<Object\>
287- Enable/disable toolbar items dynamically via EnableItems method
288- Context menu — EnableContextMenu, built-in items, custom items, sub-menus
289- Disable context menu for specific columns via ContextMenuOpen event
290- ContextMenuItemClicked event for custom item handling
291
292📄 **Read:** [references/touch-and-interaction-modes.md](references/touch-and-interaction-modes.md)
293- Touch interaction support
294- EnableTouch property
295- Splitter for resizing grid/chart panes
296- SplitterSettings configuration
297
298📄 **Read:** [references/clipboard-and-accessibility.md](references/clipboard-and-accessibility.md)
299- Copy/paste functionality
300- Clipboard module integration
301- Keyboard navigation
302- Accessibility features
303
304---
305
306### 11. Performance
307
308**When to read:** Optimization strategies, large datasets
309
310📄 **Read:** [references/virtualization-and-performance.md](references/virtualization-and-performance.md)
311- EnableRowVirtualization for large datasets
312- Row and column virtualization
313- Frozen columns (FrozenColumns property)
314- WebAssembly performance optimization tips
315- Best practices for handling 10,000+ tasks
316
317---
318
319### 12. Export
320
321**When to read:** PDF and Excel export features
322
323📄 **Read:** [references/pdf-export.md](references/pdf-export.md)
324- PdfExport() method
325- PdfExportProperties configuration
326- Multi-page PDF export
327- Header and footer customization
328- Page size and styling in PDF
329- Template-based PDF export
330
331📄 **Read:** [references/excel-export.md](references/excel-export.md)
332- ExcelExport() method
333- ExcelExportProperties configuration
334- Column formatting in Excel
335- Hierarchical data export
336- Custom cell styling
337
338---
339
340### 13. API Reference
341
342**When to read:** Detailed API documentation lookup
343
344📄 **Read:** [references/gantt-methods-properties.md](references/gantt-methods-properties.md)
345- SfGantt<TValue> main component
346- GanttTaskFields mapping
347- GanttColumn configuration
348- GanttResource properties
349- GanttSegment for task splitting
350
351📄 **Read:** [references/api-settings-classes.md](references/api-settings-classes.md)
352- GanttEditSettings (AllowAdding, AllowEditing, AllowDeleting, Mode)
353- GanttSelectionSettings (Mode, Type, CellSelectionMode)
354- GanttFilterSettings (Type, HierarchyMode)
355- GanttSortSettings and GanttSearchSettings
356- GanttTimelineSettings and GanttSplitterSettings
357
358📄 **Read:** [references/api-event-args.md](references/api-event-args.md)
359- GanttActionEventArgs<TValue>
360- BeforeTooltipRenderEventArgs<TValue>
361- BeforeCopyEventArgs
362- Other event argument classes
363
364📄 **Read:** [references/api-enums-and-types.md](references/api-enums-and-types.md)
365- EditMode (Auto, Dialog, Taskbar)
366- DependencyType (FS, SF, FF, SS)
367- DurationUnit (Day, Hour, Minute)
368- FilterType, ViewType, GridLine enums
369- Other enum types
370---
371
372## Quick Start Example
373
374```razor
375@page "/gantt"
376@using Syncfusion.Blazor.Gantt
377
378<SfGantt DataSource="@TaskCollection" Height="450px" Width="100%">
379 <GanttTaskFields Id="TaskId"
380 Name="TaskName"
381 StartDate="StartDate"
382 EndDate="EndDate"
383 Duration="Duration"
384 Progress="Progress"
385 ParentID="ParentId"
386 Dependency="Predecessor">
387 </GanttTaskFields>
388</SfGantt>
389
390@code {
391 private List<TaskData> TaskCollection { get; set; }
392
393 protected override void OnInitialized()
394 {
395 TaskCollection = new List<TaskData>
396 {
397 new TaskData { TaskId = 1, TaskName = "Project Initiation", StartDate = new DateTime(2024, 04, 01), EndDate = new DateTime(2024, 04, 05), Progress = 100 },
398 new TaskData { TaskId = 2, TaskName = "Identify Site location", StartDate = new DateTime(2024, 04, 01), Duration = 4, Progress = 50, ParentId = 1 },
399 new TaskData { TaskId = 3, TaskName = "Perform Soil test", StartDate = new DateTime(2024, 04, 01), Duration = 3, Progress = 70, Predecessor = "2", ParentId = 1 },
400 };
401 }
402
403 public class TaskData
404 {
405 public int TaskId { get; set; }
406 public string TaskName { get; set; }
407 public DateTime StartDate { get; set; }
408 public DateTime? EndDate { get; set; }
409 public int? Duration { get; set; }
410 public int Progress { get; set; }
411 public int? ParentId { get; set; }
412 public string Predecessor { get; set; }
413 }
414}
415```
416
417---
418
419## Common Patterns
420
421### Pattern 1: Full CRUD with Dialog Editing
422
423```razor
424<SfGantt DataSource="@TaskCollection" Toolbar="@ToolbarItems">
425 <GanttTaskFields Id="TaskId" Name="TaskName" StartDate="StartDate"
426 EndDate="EndDate" Duration="Duration" Progress="Progress"
427 ParentID="ParentId" Dependency="Predecessor">
428 </GanttTaskFields>
429 <GanttEditSettings AllowAdding="true"
430 AllowEditing="true"
431 AllowDeleting="true"
432 AllowTaskbarEditing="true"
433 Mode="EditMode.Dialog">
434 </GanttEditSettings>
435</SfGantt>
436
437@code {
438 private List<string> ToolbarItems = new List<string> { "Add", "Edit", "Delete" };
439}
440```
441
442### Pattern 2: Critical Path with Resource Allocation
443
444```razor
445<SfGantt DataSource="@TaskCollection"
446 Resources="@ResourceCollection"
447 EnableCriticalPath="true">
448 <GanttTaskFields Id="TaskId" Name="TaskName" StartDate="StartDate"
449 EndDate="EndDate" Duration="Duration"
450 ResourceInfo="Resources" Work="Work">
451 </GanttTaskFields>
452 <GanttResource DataSource="@ResourceCollection"
453 Id="ResourceId"
454 Name="ResourceName">
455 </GanttResource>
456 <GanttCriticalPathSettings SlackValue="1"></GanttCriticalPathSettings>
457</SfGantt>
458```
459
460### Pattern 3: Remote Data with Entity Framework
461
462```razor
463<SfGantt TValue="TaskData">
464 <SfDataManager Adaptor="Adaptors.UrlAdaptor" Url="api/gantt"></SfDataManager>
465 <GanttTaskFields Id="TaskId" Name="TaskName" StartDate="StartDate"
466 EndDate="EndDate" Duration="Duration" ParentID="ParentId">
467 </GanttTaskFields>
468</SfGantt>
469```
470
471### Pattern 4: Export with Custom Styling
472
473```razor
474<SfGantt @ref="GanttRef"
475 DataSource="@TaskCollection"
476 AllowPdfExport="true"
477 AllowExcelExport="true"
478 Toolbar="@ToolbarItems">
479 <GanttTaskFields Id="TaskId" Name="TaskName" StartDate="StartDate" EndDate="EndDate">
480 </GanttTaskFields>
481 <GanttEvents TValue="TaskData" OnToolbarClick="ToolbarClickHandler"></GanttEvents>
482</SfGantt>
483
484@code {
485 private SfGantt<TaskData> GanttRef;
486 private List<string> ToolbarItems = new List<string> { "PdfExport", "ExcelExport" };
487
488 private async Task ToolbarClickHandler(ClickEventArgs args)
489 {
490 if (args.Item.Id == "PdfExport")
491 await GanttRef.ExportToPdfAsync();
492 else if (args.Item.Id == "ExcelExport")
493 await GanttRef.ExportToExcelAsync();
494 }
495}
496```
497
498---
499
500## Key Configuration Points
501
502### Essential Properties
503
504- **DataSource**: Task collection (hierarchical or self-referential)
505- **GanttTaskFields**: Maps task properties (Id, Name, StartDate, Duration, ParentID, Dependency)
506- **Height/Width**: Component dimensions
507- **Toolbar**: Built-in actions (Add, Edit, Delete, Search, Export)
508- **GanttEditSettings**: CRUD permissions and edit mode
509
510### Timeline Configuration
511
512- **DurationUnit**: Default duration unit (Day, Hour, Minute)
513- **ProjectStartDate/ProjectEndDate**: Timeline boundaries
514- **GanttTimelineSettings**: Timeline tiers, format, zoom levels
515- **DayWorkingTime**: Working hours per day
516- **Holidays**: Non-working dates
517
518### Visual Customization
519
520- **GanttTaskbarSettings**: Taskbar height and styling
521- **GanttLabelSettings**: Left, right, top labels
522- **GanttTemplates**: Custom taskbar, tooltip, milestone templates
523- **BaselineColor/ConnectorLineBackground**: Visual styling
524
525### Performance Optimization
526
527- **EnableRowVirtualization**: For large datasets (1000+ tasks)
528- **EnableColumnVirtualization**: For many columns
529- **LoadChildOnDemand**: Lazy-load child tasks
530- **TreeColumnIndex**: Specify hierarchy column
531
532---
533
534## Common Use Cases
535
5361. **Project Management Dashboard**: Full CRUD, dependencies, critical path, resource allocation
5372. **Construction Scheduling**: Baseline tracking, split tasks, holidays, custom working hours
5383. **Resource Planning**: Resource view, overallocation detection, work-based scheduling
5394. **Sprint Planning**: Timeline zooming, milestone tracking, progress indicators
5405. **Manufacturing Timeline**: Multi-level hierarchy, dependency validation, PDF export
541
542---
543
544## Next Steps
545
546After reviewing this navigation guide:
547
5481. **For initial setup**: Start with section 1 (Getting Started) based on your platform
5492. **For data connectivity**: Review section 2 (Data Binding) for your data source type
5503. **For specific features**: Navigate to the relevant section and read focused reference files
5514. **For API details**: Consult section 13 (API Reference) for properties, methods, and classes
552
553> **Events reference**: Event argument types are documented in `references/api-event-args.md`. Individual feature files (e.g., `taskbar-editing.md`, `filtering-and-search.md`, `sorting-operations.md`, `selection-modes.md`) each document the events specific to that feature with handler signatures and examples.
554
555Each reference file provides complete implementation details, code examples, edge cases, and troubleshooting guidance for its specific topic.
556
557
558
559
560
561
562
563
564
565