private string GetMenu(UserVM user) { ModuleMenuVM lastNode = null; List <ModuleMenuVM> list = new List <ModuleMenuVM>(); List <ModuleMenuVM> Rtn = new List <ModuleMenuVM>(); DataTable dt = new DataTable(); using (SqlConnection sc = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnUser"].ToString())) { using (SqlCommand cmd = new SqlCommand("dbo.usp_SystemM_xGetModuleMenu", sc)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@UserID", user.ID); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { sc.Open(); da.Fill(dt); } } } EntityS.FillModel(list, dt); foreach (ModuleMenuVM item in list) { if (item.PID == 0) { Rtn.Add(item); lastNode = item; } else { if (lastNode != null) { if (lastNode.ID == item.PID) { lastNode.Children.Add(item); } else { GenMenuRecursive(item, lastNode); } } } } return(JsonConvert.SerializeObject(Rtn)); }
private void GenMenuRecursive(ModuleMenuVM nowNode, ModuleMenuVM innerNode) { ModuleMenuVM myParent = innerNode.Children.Find(x => nowNode.PID == x.ID); if (myParent != null) { myParent.Children.Add(nowNode); } else { foreach (ModuleMenuVM item in innerNode.Children) { GenMenuRecursive(nowNode, item); } } }