Claude
Skills
Sign in
โ† Back

syncfusion-blazor-dropdown-tree

Included with Lifetime
$97 forever

Implement Syncfusion Blazor Dropdown Tree component for hierarchical data selection with single/multi-selection, checkboxes, filtering, and advanced customization. Use this skill whenever the user needs to display tree-structured data in a dropdown, select single or multiple hierarchical items, implement checkboxes for multi-item selection, filter tree data, customize templates, bind to remote data sources, or handle tree-related events and validation.

Design

What this skill does


# Implementing Syncfusion Blazor Dropdown Tree Component

The Blazor Dropdown Tree component is a hierarchical data selection control that displays tree-structured data in a dropdown popup. It supports local and remote data binding, single and multi-selection modes, checkboxes, filtering, custom templates, and comprehensive event handling.

## When to Use This Skill

- **Display hierarchical data** in a compact dropdown format
- **Single selection**: Allow users to select one item from a tree structure (default mode)
- **Multi-selection**: Enable selection of multiple tree nodes using CTRL+SHIFT shortcuts
- **Checkbox selection**: Provide checkbox-based multi-selection with dependent state management
- **Filter tree data**: Implement search functionality to filter nodes by text
- **Remote data sources**: Bind to OData, OData V4, Web API, or custom service endpoints
- **Custom templates**: Personalize item display, selected value display, and popup header
- **Handle events**: Respond to lifecycle events, selection changes, popup actions
- **Form validation**: Integrate with form validation frameworks
- **Styling and appearance**: Apply CSS classes, disabled states, and theme customization

## Documentation and Navigation Guide

### Getting Started
๐Ÿ“„ **Read:** [references/getting-started.md](references/getting-started.md)
- Installation and NuGet package setup
- Web and Server app configuration
- Basic component initialization
- Data binding fundamentals
- First working example

### Selection and Modes
๐Ÿ“„ **Read:** [references/selection-and-modes.md](references/selection-and-modes.md)
- Single selection (default behavior)
- Multi-selection with AllowMultiSelection property
- Keyboard shortcuts (CTRL, SHIFT)
- Preselected values and dynamic selection
- Getting selected values with @bind-Value
- Clearing selection

### Checkbox Features
๐Ÿ“„ **Read:** [references/checkbox-features.md](references/checkbox-features.md)
- ShowCheckBox property for multi-item selection
- AutoUpdateCheckState for dependent parent-child relationships
- ShowSelectAll for selecting/deselecting all nodes
- SelectAllAsync and programmatic selection methods

### Data Binding and Remote Data
๐Ÿ“„ **Read:** [references/data-binding-operations.md](references/data-binding-operations.md)
- Local data binding (hierarchical and self-referential)
- ExpandoObject and DynamicObject binding
- Remote data with ODataAdaptor, ODataV4Adaptor, WebApiAdaptor
- Entity Framework integration
- Observable collections with dynamic data updates
- Load on Demand for large datasets
- Adding/removing items dynamically
- GetTreeViewData method for retrieving node information

### Events and Callbacks
๐Ÿ“„ **Read:** [references/events-callbacks.md](references/events-callbacks.md)
- Lifecycle events (Created, Destroyed)
- Popup events (OnPopupOpen, OnPopupClose)
- Selection events (ValueChanging, ValueChanged)
- Filtering event with custom filters
- OnActionFailure for error handling
- Event handlers and async support

### Filtering and Search
๐Ÿ“„ **Read:** [references/filtering-search.md](references/filtering-search.md)
- AllowFiltering property to enable search
- FilterType options (StartsWith, EndsWith, Contains)
- IgnoreCase for case-insensitive filtering
- FilterBarPlaceholder customization
- Minimum filter length implementation

### Sorting
๐Ÿ“„ **Read:** [references/sorting.md](references/sorting.md)
- SortOrder property (None, Ascending, Descending)
- Dynamic sorting updates

### Templates and Customization
๐Ÿ“„ **Read:** [references/templates-customization.md](references/templates-customization.md)
- ItemTemplate for custom node rendering
- ValueTemplate for selected value display
- HeaderTemplate for popup header customization
- Advanced styling and layout patterns

### Styling and Appearance
๐Ÿ“„ **Read:** [references/styling-appearance.md](references/styling-appearance.md)
- Disabled state configuration
- CssClass property with predefined classes (e-success, e-warning, e-error, e-outline)
- PopupWidth and PopupHeight customization
- ZIndex for layer management
- Theme support and responsive design

### Form Validation and Configuration
๐Ÿ“„ **Read:** [references/validation-localization.md](references/validation-localization.md)
- Form validation integration
- Value binding in forms
- Localization support
- PopupSettings configuration
- Accessibility and placeholder settings

## Quick Start Example

```razor
@using Syncfusion.Blazor.Navigations

<SfDropDownTree TItem="EmployeeData" TValue="string" 
    Placeholder="Select an employee" 
    Width="500px">
    <DropDownTreeField TItem="EmployeeData" 
        DataSource="Data" 
        ID="Id" 
        Text="Name" 
        HasChildren="HasChild" 
        ParentID="PId">
    </DropDownTreeField>
</SfDropDownTree>

@code {
    List<EmployeeData> Data = new List<EmployeeData>
    {
        new EmployeeData() { Id = "1", Name = "Steven Buchanan", Job = "General Manager", HasChild = true, Expanded = true },
        new EmployeeData() { Id = "2", PId = "1", Name = "Laura Callahan", Job = "Product Manager", HasChild = true },
        new EmployeeData() { Id = "3", PId = "2", Name = "Andrew Fuller", Job = "Team Lead", HasChild = true },
        new EmployeeData() { Id = "4", PId = "3", Name = "Anne Dodsworth", Job = "Developer" },
    };

    public class EmployeeData
    {
        public string? Id { get; set; }
        public string? Name { get; set; }
        public string? Job { get; set; }
        public bool HasChild { get; set; }
        public bool Expanded { get; set; }
        public string? PId { get; set; }
    }
}
```

## Common Patterns

### Pattern 1: Multi-Selection with Checkboxes
Enable checkbox-based selection with automatic parent-child state management:

```razor
<SfDropDownTree TItem="EmployeeData" TValue="string" 
    ShowCheckBox="true" 
    AutoUpdateCheckState="true"
    ShowSelectAll="true">
    <DropDownTreeField TItem="EmployeeData" DataSource="Data" 
        ID="Id" Text="Name" HasChildren="HasChild" ParentID="PId">
    </DropDownTreeField>
</SfDropDownTree>
```

### Pattern 2: Preselected Values
Set default selected nodes using @bind-Value with AllowMultiSelection:

```razor
<SfDropDownTree TItem="EmployeeData" TValue="string" 
    AllowMultiSelection="true"
    @bind-Value="@SelectedIds">
    <DropDownTreeField TItem="EmployeeData" DataSource="Data" 
        ID="Id" Text="Name" HasChildren="HasChild" ParentID="PId">
    </DropDownTreeField>
</SfDropDownTree>

@code {
    List<string> SelectedIds = new List<string>() { "1", "5" };
}
```

### Pattern 3: Search with Filtering
Enable search functionality with custom filter types:

```razor
<SfDropDownTree TItem="EmployeeData" TValue="string" 
    AllowFiltering="true"
    FilterType="FilterType.Contains"
    FilterBarPlaceholder="Search employees...">
    <DropDownTreeField TItem="EmployeeData" DataSource="Data" 
        ID="Id" Text="Name" HasChildren="HasChild" ParentID="PId">
    </DropDownTreeField>
</SfDropDownTree>
```

### Pattern 4: Remote Data Binding (OData)
Bind to remote OData services with DataManager:

```razor
<SfDropDownTree TValue="int?" TItem="TreeData" Placeholder="Select an employee" Width="500px">
    <DropDownTreeField TItem="TreeData" Query="@Query" 
        ID="EmployeeID" Text="FirstName" ParentID="ReportsTo" HasChildren="HasChildren">
        <SfDataManager Url="url" 
            Adaptor="Syncfusion.Blazor.Adaptors.ODataV4Adaptor" 
            CrossDomain="true">
        </SfDataManager>
    </DropDownTreeField>
</SfDropDownTree>

@code {
    public Query Query = new Query();
}
```

## Key Properties and APIs

| Property | Type | Description |
|----------|------|-------------|
| `TItem` | Generic | Model class for data items |
| `TValue` | Generic | Type of selected value(s) |
| `Value` | List<TValue> | Two-way bindable selected values |
| `DataSource` | IEnumerable | Local data source (via DropDownTreeField) |
| `AllowMultiSelection` | bool | Enable multi-node select

Related in Design