diff --git a/Demos/Blazorise.Demo/Pages/Tests/TreeViewPage.razor b/Demos/Blazorise.Demo/Pages/Tests/TreeViewPage.razor index 43b1d977fa..2c9dd92f30 100644 --- a/Demos/Blazorise.Demo/Pages/Tests/TreeViewPage.razor +++ b/Demos/Blazorise.Demo/Pages/Tests/TreeViewPage.razor @@ -26,6 +26,7 @@ + @@ -41,12 +42,16 @@ } + + Virtualize + treeViewRef; - private IList expandedNodes = new List(); - private IList selectedNodes = new List(); + private IList expandedNodes = new ObservableCollection(); + private IList selectedNodes = new ObservableCollection(); private NodeInfo selectedNode; private TreeViewSelectionMode selectionMode; + private bool virtualize; public class NodeInfo { public string Text { get; set; } - public IEnumerable Children { get; set; } + public ObservableCollection Children { get; set; } public bool Disabled { get; set; } } - private IEnumerable Nodes = new[] + private ObservableCollection Nodes = new ObservableCollection() { new NodeInfo { Text = "NodeInfo 1" }, new NodeInfo { Text = "NodeInfo 2", - Children = new [] + Children = new ObservableCollection() { new NodeInfo { Text = "NodeInfo 2.1" }, new NodeInfo { - Text = "NodeInfo 2.2", Children = new [] + Text = "NodeInfo 2.2", Children = new ObservableCollection() { new NodeInfo { Text = "NodeInfo 2.2.1" }, new NodeInfo { Text = "NodeInfo 2.2.2" }, @@ -51,12 +53,12 @@ public class NodeInfo new NodeInfo { Text = "NodeInfo 4", - Children = new [] + Children = new ObservableCollection() { new NodeInfo { Text = "NodeInfo 4.1" }, new NodeInfo { - Text = "NodeInfo 4.2", Children = new [] + Text = "NodeInfo 4.2", Children = new ObservableCollection() { new NodeInfo { Text = "NodeInfo 4.2.1" }, new NodeInfo { Text = "NodeInfo 4.2.2" }, @@ -72,6 +74,17 @@ public class NodeInfo new NodeInfo { Text = "NodeInfo 6" } }; + + int count = 0; + private async Task AddNode() + { + count++; + selectedNode.Children ??= new ObservableCollection(); + selectedNode.Children.Add( new NodeInfo() + { + Text = selectedNode.Text + count, + } ); + } private async Task ForceReload() { await treeViewRef.Reload(); diff --git a/Documentation/Blazorise.Docs/Models/Snippets.generated.cs b/Documentation/Blazorise.Docs/Models/Snippets.generated.cs index 9ae12ca787..55774017ac 100644 --- a/Documentation/Blazorise.Docs/Models/Snippets.generated.cs +++ b/Documentation/Blazorise.Docs/Models/Snippets.generated.cs @@ -10970,6 +10970,46 @@ public class Item public const string TreeViewResourcesExample = @""; + public const string TreeViewVirtualizationExample = @" item.Children)"" + HasChildNodes=""@(item => item.Children?.Any() == true)"" + @bind-SelectedNode=""selectedNode"" + @bind-ExpandedNodes=""expandedNodes"" + Virtualize> + + + @context.Text + + + +@code { + public class Item + { + public string Text { get; set; } + public IEnumerable Children { get; set; } + } + + protected override void OnInitialized() + { + Items = Enumerable.Range( 1, 4 ).Select( rootIndex => new Item + { + Text = $""Root Node {rootIndex}"", + Children = Enumerable.Range( 1, 100 ).Select( childIndex => new Item + { + Text = $""Root {rootIndex} - Child {childIndex}"", + Children = Enumerable.Empty() // No children for the child nodes in this example + } ) + } ).ToList(); + + base.OnInitialized(); + } + + IEnumerable Items; + + IList expandedNodes = new List(); + Item selectedNode; +}"; + public const string BasicVideoExample = @"