public class MenuModel{/// <summary>/// ID/// </summary>public int ID { get; set; }/// <summary>/// 菜单名/// </summary>public string MenuName { get; set; }/// <summary>/// 父菜单/// </summary>public int ParentID { get; set; }}public class TreeModel{/// <summary>/// ID/// </summary>public string id { get; set; }/// <summary>/// 节点名称/// </summary>public string text { get; set; }/// <summary>/// 是否展开/// </summary>public string state  { get; set; }/// <summary>/// 图标样式/// </summary>public string iconCls { get; set; }/// <summary>/// 子节点集合/// </summary>public List<TreeModel> children { get; set; }}public List<TreeModel> GetTreeList(int ParentID){List<TreeModel> TreeList = new List<TreeModel>();List<MenuModel> ModelList = GetChildMenuList(ParentID);foreach (var item in ModelList){TreeModel m = new TreeModel();m.id = item.ID.ToString();m.text = item.MenuName.ToString();m.children = GetTreeList(item.ID);TreeList.Add(m);}return TreeList;}/// <summary>/// 获取所有菜单数据/// </summary>/// <returns></returns>public List<MenuModel> GetAllMenuList(){List<MenuModel> list = new List<MenuModel>();list.Add(new MenuModel { ID = 1, MenuName = "菜单1", ParentID = 0 });list.Add(new MenuModel { ID = 2, MenuName = "菜单1.1", ParentID = 1 });list.Add(new MenuModel { ID = 3, MenuName = "菜单1.1.1", ParentID = 2 });list.Add(new MenuModel { ID = 4, MenuName = "菜单2", ParentID = 0 });return list;}/// <summary>/// 根据父节点获取子节点/// </summary>/// <param name="ParentID"></param>/// <returns></returns>public List<MenuModel> GetChildMenuList(int ParentID){List<MenuModel> list = GetAllMenuList();var result =list.Where(x => x.ParentID == ParentID);return result.ToList();}

调用:

List<TreeModel> list = GetTreeList(0);
string json = new JavaScriptSerializer().Serialize(list);

结果为

[{"id": "1","text": "菜单1","state": null,"iconCls": null,"children": [{"id": "2","text": "菜单1.1","state": null,"iconCls": null,"children": [{"id": "3","text": "菜单1.1.1","state": null,"iconCls": null,"children": []}]}]},{"id": "4","text": "菜单2","state": null,"iconCls": null,"children": []}]

转载于:https://www.cnblogs.com/zengnansheng/p/10389376.html

C#之生成树形菜单数据相关推荐

  1. MVC +easyui +json 前后端交互动态生成树形菜单

    效果图: 1.view端代码实现,引入jquery.easyui 的js文件,创建树形菜单标签<ul>,如下所示: @{ViewBag.Title = "Home Page&qu ...

  2. php 递归生成树形菜单,递归生成树形结构菜单

    public List listWithTree() { //1.查出所有菜单 List categoryEntities = categoryDao.selectList(null); //2.组装 ...

  3. 使用ztree异步加载数据库数据形成树形菜单

    -搞了好久好久,在此记录一下这个这个胜利的时刻!!!!作为一个合格的程序员,任重而道远啊- 项目环境:thinkphp5+mysql+ztree 项目目标:从MySQL数据库获取小区用户位置信息.用户 ...

  4. Unity 引擎UGUI之自定义树形菜单(TreeView)

    先上几张效果图:          如果你需要的也是这种效果,那你就来对地方了! 目前,我们这个树形菜单展现出来的功能如下: 1.可以动态配置数据源: 2.点击每个元素的上下文菜单按钮(也就是图中的三 ...

  5. zTree树形菜单交互选项卡效果实现

    1. 添加自定义属性 page 2. 为 ztree 每个树形节点,添加点击事件 <!DOCTYPE html> <html><head><meta char ...

  6. zTree树形菜单使用实例

    在每个节点添加 id 和 pid, id 表示当前节点编号,pid 表示父节点编号 第一步:在页面显示菜单位置,添加 ul设置 class="ztree" 第二步:开启简单数据格式 ...

  7. php会计科目,ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法

    假设数据库中会计科目数据表的字段为:id,code,name,islast.分别为自增主键,科目编码,科目名称,是否为末级("1"表示末级科目). 这里在Thinkphp的模型层中 ...

  8. html5 jstree树形菜单,树形插件jsTree

    jsTree是一款基于jQuery的树形控件,具有扩展性强,可编辑和可配置的特性,支持HTML,JSON和Ajax数据加载.jsTree官网地址:https://www.jstree.com/.这里主 ...

  9. vue 递归组件多级_Vue 递归组件构建一个树形菜单

    原标题:Vue 递归组件构建一个树形菜单 Vue.js 中的递归组件是一个可以调用自己的组件例如: Vue.component('recursive-component', { template: ` ...

  10. ajax使用json下拉框,ajax请求后台得到json数据后动态生成树形下拉框的方法

    如下所示: $(function(){ $.ajax({ url:"departmentAction_getAllDep.action", type:"post" ...

最新文章

  1. 服务差,信号不好真的是联通用户下滑的原因吗?
  2. 按摩加快肌肉修复有科学依据了,哈佛大学研究成果登Science子刊
  3. MindManager: Draw your own MindMap!
  4. 利用Python爬取糗事百科段子信息
  5. RESTful 架构风格概述
  6. php显示发件人地址吗,php – 发件人地址被拒绝
  7. SpringBoot YML配置文件
  8. 实战:采⽤Sharding-JDBC实现订单表的(两主四从) 分库分表 和 读写分离
  9. 平时如何管理你的项目?
  10. 计算机网络课程思政教学目标,计算机学院举行课程思政示范教学活动
  11. WEBI上取月的整周
  12. 基于AT89C51及Proteus仿真的室内火灾监测装置
  13. (附源码)node.js学生钟点工管理系统 毕业设计 290011
  14. java 读取excel表格_Java读取excel表格(原理+实现)
  15. vue项目中引入Luckysheet
  16. python识别颜色并提取轮廓_pythonopencv检测并提取目标颜色
  17. linux db2 端口配置,DB2数据库-实例级配置-TCP/IP以及端口配置
  18. 编译安卓系统源码jack-server问题入坑,全网最全解决方法
  19. 看医疗行业如何建立信息化战略决策
  20. Effie:真正的极简主义!秒杀幕布

热门文章

  1. IOS开发之Post 方式获取服务器数据
  2. char* char [] 区别[zz]
  3. delphi 标题栏相关操作
  4. asp.net程序中最常用的三十三种编程代码(转自CSDN)
  5. 第五章 基于时序差分和Q学习的无模型预测与控制-强化学习理论学习与代码实现(强化学习导论第二版)
  6. 【LeetCode】【字符串】题号:*551. 学生出勤记录 I
  7. 旋转数组的最小数字(牛客网C++代码)
  8. ERDAS 安装完成之后如何打开软件新建工程
  9. 题目:将一个正整数分解质因数
  10. kubernetes集群pod异常状态ContainerCreating的解决