采用递归方式
复杂一点,方法可以读取所有菜单。
读取全部菜单存入list,返回json。
可自行增减功能
public class RoadFlowTree
{
// state:节点状态,'open' 或 'closed',默认:'open'。如果为'closed'的时候,将不自动展开该节点。 checked:表示该节点是否被选中。 attributes: 被添加到节点的自定义属性。
//id
public int id { get; set; }
//名称
public string text { get; set; }
//节点状态
public string state { get; set; }
//子集
public List<RoadFlowTree> children
{ get; set; }
/// <summary>
/// 获取部门类型树
/// </summary>
/// <returns></returns>
public static string GetTreeRoadFlow()
{
List<int> rootID = new List<int>();
List<RoadFlowTree> roadFlowTrees = new List<RoadFlowTree>();
RoadFlowTree RoadFlowTree = new RoadFlowTree();
//获取菜单中所有一级菜单
List<T> rootid = GetAll().Where(s => s.ParentId == 0).OrderByDescending(s => s.DepartId).ToList();
foreach (var root in rootid)
{
RoadFlowTree.id = root.id;
RoadFlowTree.text = root.text;
RoadFlowTree.state = "open";
RoadFlowTree.children = GetChildTree(root.DepartId);
roadFlowTrees.Add(RoadFlowTree);
}
string jsons = Newtonsoft.Json.JsonConvert.SerializeObject(roadFlowTrees);
return jsons;
}
private static List<RoadFlowTree> GetChildTree(int parentID)
{
List<RoadFlowTree> roadFlowTrees = new List<RoadFlowTree>();
var childs = GetByParentId(parentID);
foreach (var child in childs)
{
RoadFlowTree RoadFlowTree = new RoadFlowTree();
RoadFlowTree.id = child.id;
RoadFlowTree.text = child.text;
RoadFlowTree.children = GetChildTree(child.DepartId);
if (RoadFlowTree.children.Count > 0)
{
RoadFlowTree.state = "closed";
}
roadFlowTrees.Add(RoadFlowTree);
}
return roadFlowTrees;
}
}