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));
    }
Exemple #2
0
    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);
            }
        }
    }