/// <summary> /// 创建树数据 /// </summary> /// <param name="parentNode"></param> /// <param name="data"></param> /// <param name="showCheckBox"></param> private static void BuildTree(MenuTreeModel parentNode, List <MenuConfigEntity> data, bool showCheckBox) { var childList = data.Where(x => x.ParentId == parentNode.id).ToList(); childList.ForEach(x => { parentNode.AddChild(new MenuTreeModel(x, parentNode.id, showCheckBox)); //加入到上一级级树下面 }); parentNode.ChildNodes.ForEach(x => { BuildTree(x, data, showCheckBox); }); }
/// <summary> /// 创建树数据,根据传入的授权菜单的ID,来判断数据是否需要被勾上 (checkbox) /// </summary> /// <param name="parentNode"></param> /// <param name="data"></param> /// <param name="authIds"></param> private static void BuildTree(MenuTreeModel parentNode, List <MenuConfigEntity> data, List <string> authIds) { var childList = data.Where(x => x.ParentId == parentNode.id).ToList(); childList.ForEach(x => { bool has = authIds.Any(p => p == x.ModuleId); parentNode.AddChild(new MenuTreeModel(x, parentNode.id, true, has ? 1 : 0)); //加入到上一级级树下面 }); parentNode.ChildNodes.ForEach(x => { x.showcheck = true; BuildTree(x, data, authIds); }); }
/// <summary> /// 生产无限级菜单 /// </summary> /// <param name="firstLevel"></param> /// <param name="data"></param> /// <param name="showCheckBox">是否显示复选框</param> /// <param name="firstlevelShowCheckBox">第一级的复选框是否显示</param> public static void FomateTree(MenuTreeModel firstLevel, List <MenuConfigEntity> data, bool showCheckBox = false, bool firstlevelShowCheckBox = false) { firstLevel.showcheck = firstlevelShowCheckBox; var childList = data.Where(x => x.ParentId == firstLevel.id).ToList(); childList.ForEach(p => { firstLevel.AddChild(new MenuTreeModel(p, firstLevel.id, showCheckBox)); //加入到一级树下面 }); firstLevel.ChildNodes.ForEach(x => { x.showcheck = showCheckBox; BuildTree(x, data, showCheckBox); }); }
/// <summary> /// 生产无限级菜单 ,根据传入的授权菜单的ID,来判断数据是否需要被勾上 (checkbox) /// </summary> /// <param name="firstLevel"></param> /// <param name="data"></param> /// <param name="AuthIds">已经授权过的菜单的ID,用来判断页面上的checkbox是不是应该勾上</param> public static void FomateTree(MenuTreeModel firstLevel, List <MenuConfigEntity> data, List <string> AuthIds, bool firstlevelShowCheckBox = false) { var childList = data.Where(x => x.ParentId == firstLevel.id).ToList(); firstLevel.showcheck = firstlevelShowCheckBox; bool firstHas = AuthIds.Any(x => x == firstLevel.id); firstLevel.checkstate = firstHas ? 1 : 0; childList.ForEach(p => { bool has = AuthIds.Any(x => x == p.ModuleId); firstLevel.AddChild(new MenuTreeModel(p, firstLevel.id, true, has ? 1 :0)); //加入到一级树下面 }); firstLevel.ChildNodes.ForEach(x => { x.showcheck = true; BuildTree(x, data, AuthIds); }); }