private void LlenaMenu() { MenuEmpleado[] Mnu = client.GetMenuEmpleadoHTML5(Session["numUsuario"].ToString()); if (Mnu != null) { foreach (MenuEmpleado item in Mnu) { TableItem genericItem; genericItem = new TableItem(item.MenuDescription, item.MenuPrimaryKey, Convert.ToInt32(item.MenuDepe), item.MenuHtml5Path, item.MenuHtml5Width, item.MenuHtml5Height); this.unsortedList.Add(genericItem); } var rootNodes = this.unsortedList.Where(x => x.ParentID == 0); // Foreach root node, get all its children and add the node to the HierarchicalDataSource. // see bellow how the FindChildren method works List <TableItem> tbl = new List <TableItem>(); foreach (TableItem node in rootNodes) { this.FindChildren(node); tbl.Add(node); //Vtbl.Add(node); } bool bnuevo = false; Int32 Contador = 0; foreach (TableItem node in tbl) { if (node.Children.Count > 0) { if (Contador == 0) { MyDivPrin.Append("<div class='divMenu'>"); MyDivPrin.Append("<ul class='topnav'> "); } MyDiv.Append("<li>"); MyDiv.Append("<a href = '#' class = 'OpenMenu'><span><b>" + node.NodeText + "</b></span></a>"); MyDiv.Append("<ul class= 'subnav'>"); MyDiv.Append("<div id='conten_" + Contador + "' class = 'OpenMenu'>"); bnuevo = true; myDivIntNuevo = new StringBuilder(); fncLlenaGrid(node.Children, bnuevo); MyDiv.Append(myDivIntNuevo); MyDiv.Append("</div>"); MyDiv.Append("</ul> "); MyDiv.Append("</li>"); } Contador++; } MyDivPrin.Append(MyDiv); MyDivPrin.Append("</ul>"); MyDivPrin.Append("</div>"); divMenu.InnerHtml = MyDivPrin.ToString(); } }
private void FindChildren(TableItem item) { // find all the children of the item var children = unsortedList.Where(x => x.ParentID == item.NodeID && x.NodeID != item.NodeID); // add the child to the item's children collection and call the FindChildren recursively, in case the child has children foreach (TableItem child in children) { item.Children.Add(child); FindChildren(child); } }