mcpField
S
syncfusion-blazor-treeview

syncfusion-blazor-treeview

github.com/syncfusionデザイン・UI4371 回インストール1 週間前に更新
リポジトリ

syncfusion-blazor-treeview について

Syncfusion TreeView で階層データを表示・操作する Blazor 開発者向けの実装ガイドです。データバインド、ノード選択と編集、ドラッグ&ドロップ、検索、大規模データの仮想化を扱います。

主な機能

  1. 01ローカルまたはリモートデータのバインド
  2. 02単一・複数・チェックボックス選択
  3. 03ノード編集とドラッグ&ドロップによる並べ替え
  4. 04検索、フィルタリング、オンデマンド読み込み
  5. 05大規模データの仮想スクロール

活用シーン

  1. 01ドラッグ&ドロップ対応のファイルブラウザー
  2. 02組織図や階層ナビゲーションの作成
  3. 03カテゴリーフィルターや権限画面の構築

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/syncfusion/blazor-ui-components-skills --skill syncfusion-blazor-treeview

インストール後、Claude Code で/syncfusion-blazor-treeviewを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
advanced-features.md
authorization-authentication.md
checkbox-features.md
customization-styling.md
data-binding.md
events-handling.md
expand-collapse-actions.md
getting-started.md
navigation-patterns.md
node-editing.md
node-selection.md

詳細

Syncfusion Blazor TreeView コンポーネントの実装

Blazor TreeView コンポーネントは、階層データを展開/折りたたみ可能なツリー構造で表示します。ローカルおよびリモートのデータバインディング、単一選択と複数選択、編集、チェックボックス、ドラッグ&ドロップによる並べ替え、大規模なデータセット向けの仮想化、フィルタリング、包括的なイベント処理に対応しています。


📋 目次

  1. 使用する場面
  2. インストールとセットアップ
  3. クイックスタート
  4. 主なプロパティ
  5. 主なメソッド
  6. 主なイベント
  7. 一般的なパターン
  8. リファレンス全体のナビゲーション

このスキルを使用する場面

次のような場合に TreeView コンポーネントを使用します。

  • 階層データの表示:展開/折りたたみ可能なノードを含むツリー構造で表示する
  • 単一選択:ユーザーがツリーから 1 つのノードを選択できるようにする
  • 複数選択:Ctrl+クリックと Shift+クリックを使って、複数のツリーノードを選択できるようにする
  • チェックボックス選択:親子の状態を自動的に管理するチェックボックスベースの複数選択を提供する
  • ノードの編集:ノードのテキストをインラインで名前変更または編集できるようにする
  • ドラッグ&ドロップ:階層内のノードを並べ替えられるようにする
  • フィルターと検索:ノードを検索する機能を実装する
  • リモートデータソース:Web API、OData サービス、またはカスタムエンドポイントにバインドする
  • イベントの処理:展開、折りたたみ、選択、編集、ドラッグ&ドロップ操作に応答する
  • 仮想化:大規模なデータセット(1000 以上のノード)をスムーズなスクロールで表示する
  • カスタムスタイル:ノードにアイコン、色、テンプレートを適用する

インストールとセットアップ

Syncfusion NuGet パッケージをインストールし、Blazor プロジェクトを構成します。

// 1. Install NuGet packages
// Install-Package Syncfusion.Blazor.Navigations -Version 26.1.35
// Install-Package Syncfusion.Blazor.Themes -Version 26.1.35

// 2. Add to _Imports.razor
@using Syncfusion.Blazor
@using Syncfusion.Blazor.Navigations

// 3. Register service in Program.cs
builder.Services.AddSyncfusionBlazor();

// 4. Add CSS theme to Index.html or _Layout.cshtml
<link href="_content/Syncfusion.Blazor.Themes/bootstrap5.css" rel="stylesheet" />

クイックスタート

@using Syncfusion.Blazor.Navigations

<SfTreeView TValue="MailItem">
    <TreeViewFieldsSettings TValue="MailItem"
        Id="Id"
        Text="FolderName"
        Child="Children"
        DataSource="@MyFolder">
    </TreeViewFieldsSettings>
    <TreeViewEvents TValue="MailItem" NodeSelected="OnNodeSelected"></TreeViewEvents>
</SfTreeView>

@code {
    public class MailItem
    {
        public string? Id { get; set; }
        public string? FolderName { get; set; }
        public List<MailItem>? Children { get; set; }
    }

    void OnNodeSelected(NodeSelectEventArgs args)
    {
        Console.WriteLine($"Selected: {args.NodeData.Text}");
    }

    List<MailItem> MyFolder = new()
    {
        new MailItem { Id = "1", FolderName = "Inbox", Children = new() },
        new MailItem { Id = "2", FolderName = "Sent", Children = new() }
    };
}

主なプロパティ

プロパティ型既定値目的
AllowDragAndDropboolfalseドラッグ&ドロップによる階層の並べ替えを有効または無効にします
AllowEditingboolfalseダブルクリックによるノード名の変更を許可します
AllowMultiSelectionboolfalseCtrl+クリックによる複数選択を有効にします
ShowCheckBoxboolfalse各ノードにチェックボックスを表示します
AutoCheckbooltrue親をチェックしたときに、子ノードを自動的にチェックまたはチェック解除します
EnablePersistenceboolfalse展開、選択、チェックの状態を localStorage に保持します
EnableVirtualizationboolfalse1000 以上のノードに対する仮想スクロールを有効にします(Height が必要です)
ExpandedNodesstring[]Empty初期状態で展開するノード ID(双方向バインド可能)
SelectedNodesstring[]Empty選択されたノード ID(双方向バインド可能)
CheckedNodesstring[]Emptyチェックされたノード ID(双方向バインド可能)
LoadOnDemandbooltrueノードの展開時にのみ子ノードを読み込みます
ExpandOnExpandActionClickClick/DoubleClick/None による展開を指定します
Heightstring"auto"固定の高さ(仮想化に必要です)

主なメソッド

メソッド目的
ExpandAllAsync()すべてのノードを展開します
ExpandAllAsync(string[] nodeIds)ID を指定してノードを展開します
CollapseAllAsync()すべてのノードを折りたたみます
CollapseAllAsync(string[] nodeIds)指定したノードを折りたたみます
BeginEditAsync(string nodeId)ノードを編集モードにします
GetTreeData()ツリーのすべてのデータを取得します
GetTreeData(string nodeId)ID を指定してノードデータを取得します
EnsureVisibleAsync(string nodeId)ノードが表示されるようにスクロールします
CheckAllAsync()すべてのチェックボックスをチェックします
UncheckAllAsync()すべてのチェックボックスのチェックを解除します
ClearStateAsync()すべての状態(選択、展開、チェック)をクリアします

主要なイベント

イベント発生するタイミング主な用途
CreatedTreeView の初期化時初期化後のセットアップ、環境設定の読み込み
DataBoundデータバインディングの完了時既定のノードを自動展開、データの検証
NodeSelectedノードを左クリックしたときノードの詳細を読み込み、アクションを有効化
NodeClickedノードをクリックしたときシングルクリックとダブルクリックを区別
NodeExpandedノードを展開したとき子ノードを読み込み(オンデマンド読み込み)
NodeCollapsedノードを折りたたんだとき任意:子ノードをメモリから解放
NodeEditing編集モードに入る前権限を検証し、編集を防止
NodeEdited編集を確定したとき新しいテキストを検証し、サーバーに保存
OnNodeDragStartドラッグを開始したとき制限対象のノードのドラッグを防止
NodeDroppedドロップが完了したときサーバー上の階層を更新
NodeCheckingチェックボックスを変更する前制限対象のノードへのチェックを防止
NodeCheckedチェックボックスを変更したとき関連データを更新し、アクションを実行
DataSourceChangedデータソースが更新されたときフィルターを再適用し、計算を更新
OnActionFailureアクションが失敗したとき(API エラー)エラーから復旧し、通知を表示
OnKeyPressキーを押したときキーボードショートカットを実装(Delete、F2 など)

よく使われるパターン

パターン 1:基本的な選択
<SfTreeView TValue="Item" @bind-SelectedNodes="@SelectedIds">
    <TreeViewFieldsSettings TValue="Item" DataSource="@Items" />
    <TreeViewEvents TValue="Item" NodeSelected="OnSelect"></TreeViewEvents>
</SfTreeView>

@code {
    string[] SelectedIds = Array.Empty<string>();
    void OnSelect(NodeSelectEventArgs args) => Console.WriteLine(args.NodeData.Text);
}
パターン 2:複数選択
<SfTreeView TValue="Item" AllowMultiSelection="true" @bind-SelectedNodes="@SelectedIds">
    <TreeViewFieldsSettings TValue="Item" DataSource="@Items" />
</SfTreeView>
パターン 3:オンデマンド読み込み
void OnNodeExpanded(NodeExpandEventArgs args)
{
    if (args.NodeData.HasChild && args.NodeData.Child == null)
    {
        // Load children from API
        args.NodeData.Child = await FetchChildren(args.NodeData.Id);
    }
}
パターン 4:ドラッグ&ドロップ
<SfTreeView TValue="Item" AllowDragAndDrop="true">
    <TreeViewFieldsSettings TValue="Item" DataSource="@Items" />
    <TreeViewEvents TValue="Item" NodeDropped="OnDropped"></TreeViewEvents>
</SfTreeView>

void OnDropped(DragAndDropEventArgs args) => UpdateHierarchy(args);
パターン 5:ノードの編集
<SfTreeView TValue="Item" AllowEditing="true" DoubleClickAction="DoubleClickAction.Edit">
    <TreeViewFieldsSettings TValue="Item" DataSource="@Items" />
    <TreeViewEvents TValue="Item" NodeEdited="OnEdited"></TreeViewEvents>
</SfTreeView>

void OnEdited(NodeEditEventArgs args) => SaveChanges(args.NodeData);
パターン 6:チェックボックス
<SfTreeView TValue="Item" AllowCheckBoxes="true" ChildChecking="ChildCheckState.Both">
    <TreeViewFieldsSettings TValue="Item" DataSource="@Items" />
</SfTreeView>

var checked = treeRef.GetAllCheckedNodes();

ドキュメントとナビゲーションガイド

はじめに

📄 参照: references/getting-started.md

  • インストールと NuGet パッケージのセットアップ
  • 種類別のプロジェクト構成(WebAssembly、Server、Web App、MAUI)
  • CSS テーマの構成
  • サービスの登録と最初の TreeView コンポーネント
データバインディングとデータソース

📄 参照: references/data-binding.md

  • ローカルデータバインディング(階層構造と自己参照構造)
  • OData、OData V4、Web API アダプターを使用したリモートデータ
  • 大規模なデータセット向けのオンデマンド読み込み
  • TreeViewFieldsSettings のプロパティマッピング
  • バインディング後の処理に使用する DataBound イベント
ノードの選択

📄 参照: references/node-selection.md

  • 単一ノードの選択(既定の動作)
  • AllowMultiSelection プロパティを使用した複数選択
  • NodeSelected イベントによる選択ノードのデータへのアクセス
  • SelectedNodes バインディングを使用したプログラムによる選択
  • 選択の検証と条件付き選択
展開と折りたたみのアクション

📄 参照: references/expand-collapse-actions.md

  • 展開/折りたたみメソッド(ExpandAllAsync、CollapseAllAsync)
  • プログラムで制御するための ExpandedNodes の双方向バインディング
  • データソースによる初期展開状態の設定
  • TreeViewNodeAnimationSettings を使用した展開/折りたたみアニメーション
  • NodeExpanded イベントによる子ノードのオンデマンド読み込み
ノードの編集

📄 参照: references/node-editing.md

  • AllowEditing プロパティで編集を有効化
  • ダブルクリックで編集モードに入る
  • BeginEditAsync メソッドによるプログラムでの編集開始
  • 検証に使用する NodeEditing および NodeEdited イベント
  • 競合検出を伴う名前変更操作
チェックボックス機能

📄 参照: references/checkbox-features.md

  • 複数項目の選択に使用する ShowCheckBox プロパティ
  • 親子間の自動同期を行う AutoCheck
  • プログラムで制御するための CheckedNodes の双方向バインディング
  • フィルタリングと反復処理によるチェック済みノードの取得
  • 権限およびロールベースのチェックボックスパターン
イベントとコールバック

📄 参照: references/events-handling.md

  • ライフサイクルイベント(Created、DataBound)
  • 選択イベント(NodeSelected、SelectedNodesChanged)
  • 展開/折りたたみイベント(NodeExpanded、NodeCollapsed)
  • 編集イベント(NodeEditing、NodeEdited)
  • チェックボックスイベント(NodeChecking、NodeChecked)
  • ドラッグ&ドロップイベント(OnNodeDragStart、NodeDropped)
  • キーボードショートカット(Enter、Delete、F2、矢印キー)
高度な機能

📄 参照: references/advanced-features.md

  • 階層の並べ替えに対応したドラッグ&ドロップ
  • 1000 個以上のノードに対応する UI 仮想化
  • 検索とフィルタリング機能
  • 並べ替え(昇順、降順、なし)
  • パフォーマンス最適化の手法
カスタマイズとスタイル設定

📄 参照: references/customization-styling.md

  • アイコンのカスタマイズ(展開/折りたたみ、ノードアイコン)
  • データに応じた動的なアイコン
  • テキストの折り返しと表示形式
  • e-icons クラスを使った CSS スタイル設定
  • テーマのサポートとレスポンシブデザイン
認可とセキュリティ

📄 参照: references/authorization-authentication.md

  • AuthorizeView を使った認証の設定
  • ロールベースの認可と権限
  • ノードレベルのアクセス制御
  • クレームベースの認可パターン
  • 編集操作とドラッグ&ドロップの保護
ナビゲーションパターン

📄 参照: references/navigation-patterns.md

  • ノードの走査メソッド(親、子、兄弟)
  • パンくずナビゲーションの実装
  • ノードリンク用の NavigateUrl プロパティ
  • 親子間のナビゲーション関係
  • 特定のノードへのディープリンク

クイックリンクと実際の使用例

お困りですか? まずはこちらをご覧ください。

  1. クイックスタート - 5 分で実行を開始
  2. 一般的なパターン - 用途に合わせてコピーして使えるパターン
  3. 主要なプロパティ - プロパティの詳細を確認
  4. data-binding.md - データバインディングの方法を学ぶ
  5. events-handling.md - すべてのイベントを確認

実際の使用例:

  • ファイルブラウザー:階層データ+展開/折りたたみ+アイコン+ドラッグ&ドロップを使用
  • 組織図:データバインディング+テンプレート+複数レベルのナビゲーションを使用
  • ナビゲーションメニュー:階層データ+キーボード操作+オンデマンド読み込みを使用
  • カテゴリーフィルター:自己参照型データ+チェックボックス+フィルタリングを使用
  • 権限 UI:チェックボックス+AutoCheck+ロールベースの認可を使用

まとめ

このスキルでは、Syncfusion Blazor TreeView コンポーネントの実装に関する包括的なガイダンスを提供します。用途に応じて必要なリファレンスファイルを見つけるには、上記の ドキュメントとナビゲーションガイド セクションをご利用ください。

コメント