c# 递归树形菜单
首先创建模型类Menus
public class Menus
{
//菜单Id
public int Id { get; set; }
//菜单名
public string MenuName { get; set; }
//父节点Id
public int ParentId { get; set; }
}
窗体中放入button跟TreeView控件
声明全局变量
private static List<Menus> menus;
添加按钮事件
private void button1_Click(object sender, EventArgs e)
{
menus = new List<Menus>();
menus.Add(new Menus { Id = 1, MenuName = "基础设置", ParentId = 0 });
menus.Add(new Menus { Id = 2, MenuName = "采购管理", ParentId = 0 });
menus.Add(new Menus { Id = 3, MenuName = "系统设置", ParentId = 1 });
menus.Add(new Menus { Id = 4, MenuName = "用户管理", ParentId = 1 });
menus.Add(new Menus { Id = 5, MenuName = "采购订单", ParentId = 2 });
menus.Add(new Menus { Id = 6, MenuName = "采购入库", ParentId = 2 });
menus.Add(new Menus { Id = 7, MenuName = "用户", ParentId = 4 });
menus.Add(new Menus { Id = 8, MenuName = "采购退货", ParentId = 2 });
menus.Add(new Menus { Id = 9, MenuName = "用户组", ParentId = 4 });
menus.Add(new Menus { Id = 10, MenuName = "权限管理", ParentId = 4 }); //首先查出顶级菜单,循环添加
IEnumerable<Menus> menu = from m in menus where m.ParentId == 0 orderby m.ParentId select m; foreach (var item in menu)
{
TreeNode node = new TreeNode();
node.Tag = item;
node.Text = item.MenuName;
treeView1.Nodes.Add(node);
//将当前节点作为参数传入子节点
AddChildMenu(node);
} }
子节点递归实现
private void AddChildMenu(TreeNode node)
{
Menus menu = new Menus();
menu = (Menus)node.Tag; //将父节点转为Model
//查出当前子节点中所有同父节点Id一样的数据
IEnumerable<Menus> childMenu = from m in menus where m.ParentId == menu.Id orderby m.Id select m;
foreach (var item in childMenu)
{
TreeNode childNode = new TreeNode();
childNode.Tag = item;
childNode.Text = item.MenuName;
node.Nodes.Add(childNode); //添加子节点
AddChildMenu(childNode); //递归调用自己,直到父节点添加所有子节点结束
}
}
效果展示

c# 递归树形菜单的更多相关文章
- java递归树形菜单显示
今天写权限整好涉及到一些菜单的显示,最先想到的是递归遍历输出,但是呢在网上找了很多有关的资料没有符合自己需求的所以就自己写了一个,如果觉得靠谱 请点点关注!!!赞一个 首先看一些设计的数据库设计 菜单 ...
- Vue.js 递归组件实现树形菜单
最近看了 Vue.js 的递归组件,实现了一个最基本的树形菜单. 项目结构: main.js 作为入口,很简单: import Vue from 'vue' Vue.config.debug = tr ...
- treeview树形菜单,递归
我使用的是递归是实现无限级树形菜单: using System; using System.Collections; using System.Configuration; using System. ...
- java构建树形菜单递归工具类
1.设计菜单实体 import java.util.List; public class Menu { //菜单id private Long id; //父节点id private Long par ...
- 用Vue.js递归组件构建一个可折叠的树形菜单
在Vue.js中一个递归组件调用的是其本身,如: Vue.component('recursive-component', { template: `<!--Invoking myself! ...
- Vue.js递归组件实现动态树形菜单
使用Vue递归组件实现动态菜单 现在很多项目的菜单都是动态生成的,之前自己做项目也是遇到这种需求,翻看了官网案例,和网上大神的案例.只有两个感觉,官网的案例太简洁,没有什么注释,看起来不太好理解,大神 ...
- PHP递归获得树形菜单和遍历文件夹下的所有文件以及子文件夹
PHP递归获得树形菜单和遍历文件夹下的所有文件以及子文件夹 一.使用递归获取树形菜单 数据表category(id,name,parent_id) <?php class category{ / ...
- Python 递归返回树形菜单JSON串 <flask>
需求:菜单管理功能(增.删.改),多级树形菜单展示 数据库表设计 create table if not exists Menu( id serial primary key , title ) no ...
- WEB开发中前后台树形菜单的展示设计
在WEB开发中经常需要进行树形菜单的展示,本例通过不同角度的总结了如下三种实现方式: 通过JS的递归实现前端菜单DOM的动态创建 通过JSP的include指令结合JSTL表达式语言递归实现菜单的展示 ...
随机推荐
- 最全总结 JavaScript Array 方法详解
JavaScript Array 指南.png Array API 大全 (公众号: 前端自学社区).png 前言 我们在日常开发中,与接口打交道最多了,前端通过访问后端接口,然后将接口数据二次处理渲 ...
- 洛谷P3067题解
题面 首先,对于每个数,有三种状态:选入集合A,选入集合B,或者不选入集合.暴力枚举的时间复杂度是 \(O(n\times3^n)\) ,显然跑不过去. 因此考虑 \(\text{Meet in Mi ...
- 小程序中多个echarts折线图在同一个页面的使用
最近做小程序的业务中遇到一个页面要同时显示几个echarts图,刚开始遇到各种冲突,死数据可以,动态数据就报错的问题,折磨了一天,仔细看了官网和查在各种资料之后,终于解决了. 直接上代码: commi ...
- 身边好几个技术一般的程序员都面上了,阿里P7门槛降低?
经常在网上的论坛里看到讨论程序员的级别,尤其在跳槽类的信息里可以看到对标阿里P7,百度T6,腾讯3.1等字眼,似乎大厂的级别俨然可以成为业内的通用货币,类似于高考分数一样,哪一档就对应着什么样的待遇. ...
- dubbo学习实践(5)之Dubbo-Admin元数据中心配置(zookeeper&Redis&Consul)
1.Dubbo2.7.8元数据中心配置zookeeper版 前面文章已经写到了dubbo-admin管理平台的docker版配置及dubbo服务注册与调用,这篇文章记录dubbo元数据中心配置 翻开d ...
- 一台服务器上部署多个Terracotta的方法
在window server 2003 下,利用apache2.2.11+tomcat6+terracotta 群集不能复制session(http://forums.terracotta.org/f ...
- sqli-labs lesson 32-37
宽字节注入: 原理:mysql在使用GBK编码的时候,会认为两个字符为一个汉字,例如%aa%5c就是一个汉字(前一个ascii码大于128才能到汉字的范围).我们在过滤 ' 的时候(也就是从防御的角度 ...
- mysql使用 分区表使用,常用sql
mysql使用 分区表使用,常用sql 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/84839478未经博主允许不得转载 ...
- NOIP 模拟 9 考试总结
T1 一道推规律的题,没想出来,暴力打得常数还太大了,挂了不少 题解 T2 这是一道二分题,很巧妙,但是对于想我一样懒得人,那个数据结构就水过去了 (裸的分块加强大的卡长和合适的块的大小可以卡过去) ...
- java导出excel(easypoi)
介绍 easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 ...