예제 #1
0
        public static IEnumerable <ObjectTreeNode> ToObjectTreeElements(this IEnumerable <ObjectTreeItem> objectTreeItems)
        {
            var checkedObjectTreeItems              = CheckObjectTreeItems(objectTreeItems);
            HashSet <ObjectTreeItem> itemsSet       = new HashSet <ObjectTreeItem>(checkedObjectTreeItems);
            ObjectTreeRoot           objectTreeRoot = new ObjectTreeRoot();

            foreach (ObjectTreeItem objectTreeItem in checkedObjectTreeItems)
            {
                if (String.IsNullOrEmpty(objectTreeItem.ParentId))
                {
                    objectTreeRoot.Nodes.Add(new ObjectTreeNode()
                    {
                        Id = objectTreeItem.Id, DisplayName = objectTreeItem.DisplayName, Link = objectTreeItem.Link, ImageUrl = objectTreeItem.ImageUrl, CssClass = objectTreeItem.CssClass
                    });
                    itemsSet.Remove(objectTreeItem);
                }
            }

            while (itemsSet.Count > 0)
            {
                foreach (ObjectTreeItem item in itemsSet.ToList())
                {
                    if (IsExistNode(objectTreeRoot, item.ParentId, out ObjectTreeNode node))
                    {
                        node.Children.Add(new ObjectTreeNode()
                        {
                            Id = item.Id, DisplayName = item.DisplayName, Link = item.Link, ImageUrl = item.ImageUrl, CssClass = item.CssClass
                        });
                        itemsSet.Remove(item);
                    }
                }
            }

            return(objectTreeRoot.Nodes);
        }
예제 #2
0
        public static ObjectTreeRoot ToObjectTreeRoot(this IEnumerable <ObjectTreeItem> objectTreeItems)
        {
            ObjectTreeRoot objectTreeRoot = new ObjectTreeRoot();

            HashSet <ObjectTreeItem> itemsSet = new HashSet <ObjectTreeItem>(objectTreeItems);

            foreach (ObjectTreeItem objectTreeItem in objectTreeItems)
            {
                if (String.IsNullOrEmpty(objectTreeItem.ParentId))
                {
                    objectTreeRoot.Nodes.Add(new ObjectTreeNode()
                    {
                        Id = objectTreeItem.Id, DisplayName = objectTreeItem.DisplayName, Link = objectTreeItem.Link
                    });
                    itemsSet.Remove(objectTreeItem);
                }
            }

            while (itemsSet.Count > 0)
            {
                foreach (ObjectTreeItem item in itemsSet.ToList())
                {
                    if (IsExistNode(objectTreeRoot, item.ParentId, out ObjectTreeNode node))
                    {
                        node.Children.Add(new ObjectTreeNode()
                        {
                            Id = item.Id, DisplayName = item.DisplayName, Link = item.Link
                        });
                        itemsSet.Remove(item);
                    }
                }
            }

            return(objectTreeRoot);
        }
예제 #3
0
 private static Boolean IsExistNode(ObjectTreeRoot objectTreeRoot, String NodeId, out ObjectTreeNode foundedNode)
 {
     foundedNode = null;
     foreach (ObjectTreeNode node in objectTreeRoot.Nodes)
     {
         foundedNode = node.Find(n => n.Id == NodeId);
         if (foundedNode != null)
         {
             return(true);
         }
     }
     return(false);
 }