IgbTree でノードを選択したときに、選択されているノードに紐づいているデータを取得したいといったことがあると思います。
その場合は、IgbTreeItem の Value パラメーター(object 型)が任意の用途で使用できますので、それを活用してください。
例えば Value パラメーターに元データの主キーなどを格納しておくことで、OnSelectionChanged イベントハンドラー内にて、選択されたツリーアイテムから、その Value パラメーター値を参照することで、バインド元のデータまでたどることが可能です。
@inject IJSRuntime JSRuntime ... (中略) ... <IgbTree Selection="TreeSelection.Cascade" SelectionChanged="OnSelectionChanged"> @foreach (var item in _SampleData) { @* IgbTreeItem の Value パラメーターに、バインド元のレコードのユニークID値を格納できます。 *@ <IgbTreeItem Label="@item.Name" Value="@item.Id"> @if (item.Children != null) { @foreach (var child in item.Children) { <IgbTreeItem Label="@child.Name" Value="@child.Id"></IgbTreeItem> } } </IgbTreeItem> } </IgbTree> @code { /// <summary>サンプル用のデータ型です。</summary> private record CountryData(int Id, string Name, string JPName, IEnumerable<CountryData>? Children = null); ... (中略) ... /// <summary> /// ツリーアイテムの選択状態が変更されたときに呼び出され、選択されているツリーアイテムの Value パラメーター値をもとに、 /// バインド元のレコードを特定し、日本語名を取り出してブラウザの alert で表示します。 /// </summary> private async Task OnSelectionChanged(IgbTreeSelectionOptionsEventArgs args) { // 選択されたツリーアイテムから Value パラメーター値を収集 var selectedItemValues = args .Detail .NewSelection .Select(item => item.Value); var selectedData = _SampleData // 2階層構造のバインド元のレコードを1次元構造にフラットに展開し、 .SelectMany(data => new[] { data }.Concat(data.Children ?? Enumerable.Empty<CountryData>())) // Id の値が、選択されたツリーアイテムの Value パラメータに含まれるレコードを抽出、 .Where(data => selectedItemValues.Contains(data.Id)) // 日本語名を取り出す .Select(data => data.JPName); // 結果をブラウザの alert で表示 await this.JSRuntime.InvokeVoidAsync("alert", "選択されたアイテムの日本語名: " + string.Join(", ", selectedData)); } }
実行結果