public List <DtreeData> GetDtree(int roleId)
        {
            var sysActions        = dao.GetList(x => true).ToList();
            List <DtreeData> list = new List <DtreeData>();

            foreach (var item in sysActions)
            {
                DtreeData dtreeData = new DtreeData();
                dtreeData.Id       = item.Id.ToString();
                dtreeData.Title    = item.Name;
                dtreeData.ParentId = item.ParentId.ToString();
                var role = item.SysRoles.Where(x => x.Id == roleId).FirstOrDefault();
                if (role != null)
                {
                    dtreeData.CheckArr = "1";
                }
                list.Add(dtreeData);
            }

            List <DtreeData> dtreeDatas         = new List <DtreeData>();
            Dictionary <string, DtreeData> dict = new Dictionary <string, DtreeData>();

            foreach (var item in list)
            {
                dict.Add(item.Id.ToString(), item);
                if (item.ParentId == "0")
                {
                    dtreeDatas.Add(item);
                }
            }

            foreach (var item in list)
            {
                if (item.ParentId != "0")
                {
                    dict[item.ParentId].Children.Add(item);
                }
            }

            return(dtreeDatas);
        }
 private void GetMenuChild(DtreeData parent, SysAction uparent, List <SysAction> allMenu)
 {
     //遍历所有的对象
     for (var i = 0; i < allMenu.Count; i++)
     {
         SysAction a = allMenu[i];
         //如果这个对象的父id和这个父对象的id是相同的,那么说明这个对象是父对象的子对象
         if (a.ParentId == uparent.Id)
         {
             //设置一个新的子对象,这里又用一个node来命名新的子对象不是很妥当
             DtreeData node = new DtreeData();
             //设置子对象的id
             node.Id = a.Id.ToString();
             //设置子对象的名称
             node.Title = a.Name;
             //一个递归调用,查找子对象是否还存在子对象
             GetMenuChild(node, a, allMenu);
             //将这个子对象放入父easyUI树中
             parent.Children.Add(node);
         }
     }
 }
        public List <DtreeData> GetMenuTree()
        {
            var sysActions = dao.GetList(x => x.Type == ActionTypeEnum.Menu).ToList();
            //节点的名称为菜单管理
            DtreeData node = new DtreeData
            {
                Title = "菜单管理",
                Id    = "0",
                //定义树节点的子节点
                Children = new List <DtreeData>()
            };

            //遍历info中的list,目的是找到list中的父对象。list储存所有的对象(包括父对象,子对象,子对象的子对象等等)
            for (var i = 0; i < sysActions.Count(); i++)
            {
                SysAction o = sysActions[i];
                //当对象的父类id为0的时候,说明这个是一个父对象
                if (o.ParentId == 0)
                {
                    //定义一个新的easyUI树节点
                    DtreeData c = new DtreeData();
                    //节点的id就是这个父对象的id
                    c.Id = o.Id.ToString();
                    //节点的名称就是这个父对象的名称
                    c.Title = o.Name;
                    //获取父对象下的子对象
                    GetMenuChild(c, o, sysActions);
                    //将这个父对象放入node之中(node相当于爷爷对象0_0)
                    node.Children.Add(c);
                }
            }
            List <DtreeData> list = new List <DtreeData>
            {
                node
            };

            return(list);
        }