or
public class LibraryTreeFormModel{ public int LibraryTreeNodeId { get; set; } public bool AddNode { get; set; } public bool DeleteNode { get; set; } public bool RenameNode { get; set; } public string Title { get; set; } public List<TreeNodesStruct> Tree { get; set; }}public struct TreeNodesStruct{ public int LibraryTreeNodeId { get; set; } public string Title { get; set; } public int? ParentNodeId { get; set; } public List<TreeNodesStruct> ChildNodes { get; set; }}<% bool isCalledFirstTime = true; %> <% Action<List<KellyServices.Website.Areas.Admin.Models.TreeNodesStruct>> libraryTreeNodeMacros = null; libraryTreeNodeMacros = libraryTreeNodes => { %> <% if (isCalledFirstTime) { %> <ul id="treeView"> <% isCalledFirstTime = false; } else { %> <ul> <%} %> <% foreach (var c in libraryTreeNodes) { %> <li data-id="<%= c.LibraryTreeNodeId.ToString() %>"><img style="vertical-align: middle" src="<%: Url.Content("~/Content/images/filesystem_folder_yellow_small.png") %>" /> <%= Html.Encode(c.Title)%> <% if (c.ChildNodes != null && c.ChildNodes.Count() > 0) libraryTreeNodeMacros(c.ChildNodes); %> </li> <% } %> </ul> <% }; %> <% var libraryTreeNodesSub = Model.Tree; %> <% libraryTreeNodeMacros(libraryTreeNodesSub); %>public TreeNodesStruct RecursiveTreeChildGetter(TreeNodesStruct root, ICollection<LibraryTreeNode> allNodes) { var childs = allNodes.Where(n => n.ParentNodeId == root.LibraryTreeNodeId); if (childs != null && childs.ToList().Count > 0) { if (root.ChildNodes == null) { root.ChildNodes = new List<TreeNodesStruct>(); } foreach (LibraryTreeNode child in childs) { TreeNodesStruct treeChild = new TreeNodesStruct(); treeChild.ChildNodes = new List<TreeNodesStruct>(); treeChild.LibraryTreeNodeId = child.LibraryTreeNodeId; treeChild.Title = child.Title; treeChild.ParentNodeId = child.ParentNodeId; root.ChildNodes.Add(treeChild); treeChild.ChildNodes = RecursiveTreeChildGetter(treeChild, allNodes).ChildNodes; } } return root; } public ActionResult LibraryTreePartial() { List<TreeNodesStruct> tree = new List<TreeNodesStruct>(); ICollection<LibraryTreeNode> nodes = libraryTreeNodeService.GetAllItems(); var roots = nodes.Where(n => n.ParentNodeId == null); foreach (LibraryTreeNode root in roots) { TreeNodesStruct treeRoot = new TreeNodesStruct(); treeRoot.ChildNodes = new List<TreeNodesStruct>(); treeRoot.LibraryTreeNodeId = root.LibraryTreeNodeId; treeRoot.Title = root.Title; treeRoot.ChildNodes = RecursiveTreeChildGetter(treeRoot, nodes).ChildNodes; tree.Add(treeRoot); } var viewModel = new LibraryTreeFormModel(); viewModel.Tree = new List<TreeNodesStruct>(); viewModel.Tree = tree; return View(viewModel); }function initTreeview() { var treeview = $("#treeView").kendoTreeView({ select: function (e) { addNewNode($(e.node).data("id")); } }); }read: "/Products", update: { url: "/Products/Update", type: "POST" }, destroy: { url: "/Products/Destroy", type: "POST" }, create: { url: "/Products/Create", type: "POST" }$("#resultsViewNavBar").data("kendoMobileNavBar").title(currentUser);
