ASP.NET Core Blazor中Tree控件的使用

b.razor:


       

           

               
                                      ClickToggleNode="false" OnLoadTreeData="@OnLoadTreeDataAsync"
                      OnTreeItemClick="OnTreeItemClick"
                      class="flex-fill">
                   
                                                                 Text="@nameof(TreeNodeInfo.Text)"
                                         IconImageUrl="@nameof(TreeNodeInfo.IconImageUrl)"
                                         Children="@nameof(TreeNodeInfo.SubNodeCollection)" />
                   

               

           

       

   

b.razor.cs

partial class b

{

    private IEnumerable TreeNodes { get; set; } = Enumerable.Empty();
        [Parameter]
        public EventCallback> LoadNodeCompleted { get; set; }
        [Parameter]
        public Func TreeItemClick { get; set; } = item => Task.CompletedTask;
        private TreeNodeInfo SelectNode=new TreeNodeInfo();
        private async Task OnTreeItemClick(TreeNodeInfo node)
        {
            if (TreeItemClick != null)
            {
                SelectNode = node;
                await TreeItemClick.Invoke(node);
            }
            
        }

 private async Task OnLoadTreeDataAsync()
        {
            this.TreeNodes = GetTreeItems();
            if (this.LoadNodeCompleted.HasDelegate)
            {
                await this.LoadNodeCompleted.InvokeAsync(this.TreeNodes);
            }

            return this.TreeNodes;
        }

    private List GetTreeItems()
        {
            TreeNodeInfo root = new TreeNodeInfo();
            List list = new List();
            if (Parameters["AuthorizeRoles"] != null)
            {
                string[] arrs = Parameters["AuthorizeRoles"].ToString().Split(';');
                foreach (string name in arrs)
                {
                    TreeNodeInfo node = new TreeNodeInfo();
                    node.Name = name;
                    node.Text = name;
                    node.IconImageUrl = GetIconCssString("Role.ico");
                    SetNodeTag(root, node);
                    root.AddSubNodeInfo(node);
                }
                if (root.SubNodeCollection.Count() > 0)
                {
                    root.SubNodeCollection.First().IsExpanded = true;
                }
                list.AddRange(root.SubNodeCollection);
            }
            return list;
        }

 private void SetNodeTag(TreeNodeInfo parent, TreeNodeInfo node)
        {
            if (parent.Tag == null)
                node.Tag = node.Name;
            else
                node.Tag = parent.Tag + "/" + node.Name;
        }

 private string GetIconCssString(string icon)
        {
            return Path.Combine(WebUtil.SystemIconsUri, icon);
        }

}

你可能感兴趣的:(asp.net,学习,1024程序员节,杂谈)