示例#1
0
        private void InsertChildren(HtmlGenericControl container, Item item, int level)
        {
            ++level;
            IEnumerable <Node> childItems = _origTree[item.Id];

            HtmlGenericControl newUl = null;

            if (childItems.Count() > 0)
            {
                container.Attributes.Add("class", "hiddenUl");
                container.Controls.AddAt(0, TreeStructureCreator.CreateExpander(item.Id, item.Term, item.ParentId, item.Attributes, "divinsideli", "expand", "spaninsidediv"));

                newUl = new HtmlGenericControl("ul");
            }
            else if (childItems.Count() == 0)
            {
                container = TreeStructureCreator.CreateLiContainer(container, item.Id, item.Term, item.ParentId, item.Attributes, "spaninsidediv solo");
                return;
            }

            foreach (Node tItem in childItems)
            {
                Item itemToAdd = new Item {
                    Id = tItem.Id, Term = tItem.Term, ParentId = tItem.ParentId, Attributes = tItem.Attributes, Level = level
                };

                HtmlGenericControl newLi = TreeStructureCreator.CreateLi(string.Empty, string.Empty, string.Empty);
                newUl.Controls.Add(newLi);
                this.InsertChildren(newLi, itemToAdd, level);
            }

            container.Controls.Add(newUl);
        }
示例#2
0
        public string Build(List <Node> originalTree)
        {
            if (originalTree == null)
            {
                throw new Exception("List is empty. Can't build a tree.");
            }
            else
            {
                _origTree = originalTree.ToLookup(x => x.ParentId);
            }

            IList <Node> treeWithoutParents = originalTree.Where(x => String.IsNullOrEmpty(x.ParentId)).OrderBy(x => x.Term).ToList();

            //Base root.
            HtmlGenericControl ulContainer = TreeStructureCreator.CreateUl(_treeViewSettings);

            #if DEBUG
            DateTime start = DateTime.Now;
            #endif

            //Leafs
            foreach (Node item in treeWithoutParents)
            {
                Item newItem = new Item {
                    Id = item.Id, Term = item.Term, ParentId = item.ParentId, Level = 0, Attributes = item.Attributes
                };

                HtmlGenericControl newLi = TreeStructureCreator.CreateLi(string.Empty, string.Empty, string.Empty);
                ulContainer.Controls.Add(newLi);

                this.InsertChildren(newLi, newItem, 0);
            }

            //Tree
            HtmlGenericControl tree = TreeStructureCreator.CreateTree(_treeViewSettings, ulContainer, originalTree);

            StringBuilder  generatedHtml = new StringBuilder();
            HtmlTextWriter htw           = new HtmlTextWriter(new StringWriter(generatedHtml));
            tree.RenderControl(htw);
            string output = generatedHtml.ToString();

            #if DEBUG
            DateTime end = DateTime.Now;
            output = output + "<br/><span>Loading time is " + (end - start).TotalMilliseconds + "</span></br/>";
            #endif

            return(output);
        }
示例#3
0
        public static HtmlGenericControl CreateTree(TreeViewSettings settings, HtmlGenericControl container, List <Node> data)
        {
            HtmlGenericControl tree = new HtmlGenericControl("div");

            if (settings.Width > 0)
            {
                tree.Attributes.Add("style", String.Format("width:{0}px;", settings.Width));
            }

            tree.Attributes.Add("id", settings.Id);
            tree.Attributes.Add("class", "sharkTreeView");
            tree.Controls.AddAt(0, TreeStructureCreator.CreateScripts(settings));
            tree.Controls.AddAt(1, TreeStructureCreator.CreateAutocompleteContainer("search", "search", String.Format("{0}_autoCompleteInput", settings.Id), "autoCompleteInput", "progressParent", "progress"));
            tree.Controls.AddAt(2, TreeStructureCreator.CreateTreeHeaderContainer(settings, 0.ToString(), "header", "headerspan"));
            tree.Controls.AddAt(3, TreeStructureCreator.CreateTreeContainer(container, settings, "tree"));

            if (settings.DataOnClient)
            {
                tree.Controls.AddAt(4, TreeStructureCreator.CreateDataContainer(settings, container, data));
            }

            return(tree);
        }