Welcome to the Blazor feedback portal. We’re happy you’re here! If you have feedback on how to improve the Blazor, we’d love to hear it!>
Thanks for joining our community and helping improve Syncfusion products!
I cannot seem to get the TreeView templates working without throwing a NullReferenceException. No matter how I try setting up the templates, it always throws the following exception:
blazor.server.js:15 [2019-10-06T15:36:30.998Z] Error: System.NullReferenceException: Object reference not set to an instance of an object. at System.Object.GetType() at Syncfusion.EJ2.Blazor.Navigations.TreeViewTemplates.BuildRenderTree(RenderTreeBuilder __builder) at Microsoft.AspNetCore.Components.ComponentBase.<.ctor>b__6_0(RenderTreeBuilder builder) at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment) at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry) at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
Below is a code example I've simplified as much as possible to show the problematic templates. The first EjsTreeView renders and works correctly, but the second throws the above exception.
@page "/treeviewtmpl" @using Phoenix.Web.ViewModels; @using Phoenix.Nav.DTO; @using Syncfusion.EJ2.Blazor.Navigations; @if (navItems != null) { <div>DEFAULT:</div> <EjsTreeView TValue="NavItemViewModel"> <TreeViewFieldsSettings TValue="NavItemViewModel" Id="Id" DataSource="@navItems" Text="Name" ParentID="ParentId" HasChildren="HasChildren" Expanded="Expanded"></TreeViewFieldsSettings> </EjsTreeView> <div>WITH TEMPLATE:</div> <EjsTreeView TValue="NavItemViewModel"> <TreeViewFieldsSettings TValue="NavItemViewModel" Id="Id" DataSource="@navItems" Text="Name" ParentID="ParentId" HasChildren="HasChildren" Expanded="Expanded" Selected="Selected"></TreeViewFieldsSettings> <TreeViewTemplates> <NodeTemplate> @{ var item = context as NavItemViewModel; <span>@item.Name</span> } </NodeTemplate> </TreeViewTemplates> </EjsTreeView> <div>WITH SIMPLE TEMPLATE:</div> <EjsTreeView TValue="NavItemViewModel"> <TreeViewFieldsSettings TValue="NavItemViewModel" Id="Id" DataSource="@navItems" Text="Name" ParentID="ParentId" HasChildren="HasChildren" Expanded="Expanded" Selected="Selected"></TreeViewFieldsSettings> <TreeViewTemplates> <NodeTemplate> <span>@((context as NavItemViewModel)).Name</span> </NodeTemplate> </TreeViewTemplates> </EjsTreeView> } else { <div>Loading...</div> } @code { protected List<NavItemViewModel> navItems; protected override void OnInitialized() { this.navItems = new List<NavItemViewModel> { new NavItemViewModel { Id = new Guid("fca52cc4-87ad-4d04-8cb3-6795d27ec5a3"), Name = "Reports", Type = NavItemType.Container, HasChildren = true, Position = 0 }, new NavItemViewModel { Id = Guid.NewGuid(), Name = "Report 1", Type = NavItemType.Report, Position = 0, ParentId = new Guid("fca52cc4-87ad-4d04-8cb3-6795d27ec5a3") } }; } }