当前位置:网站首页>使用TreeView树型菜单栏(递归调用数据库自动创建菜单)
使用TreeView树型菜单栏(递归调用数据库自动创建菜单)
2020-11-09 12:12:00 【程序猿欧文】
在做工控上位机项目时,当项目过于庞大,细分的流程就很多,需要管理的页面也就会增加很多,这时可以使用.NET控件TreeView进行页面的切换管理,并且实现TreeView间的互相切换。Intouch和Wonderware可以导入并使用TreeView控件。
一、使用VS开发TreeView控件
创建一个控件项目解决方案
拖一个TreeView控件,可以简单的进行节点编辑
Tag是需要向外传递的数据
二、出现的问题
在项目后期,对方会提出很多的改进需求,这时如果一个项目中存在过多的TreeView控件,每次改进,对于上位机系统来说就需要重新导入一次,重复过程太多,太繁琐。
解决方案:在数据库中创建菜单表,项目运行时菜单栏自动生成
三、创建数据库
创建数据库表,MenuId是菜单序号,MenuName为TreeView显示的页面名称,MenuCode为Tag,ParentId为该子节点的根节点
四、编写代码自动生成
按照两层架构来完成
实体类TreeViewNode
1 public class TreeViewNode 2 { 3 public int MenuId { get; set; } 4 5 public string MenuName { get; set; } 6 7 public string MenuCode { get; set; } 8 9 public string ParentId { get; set; }10 }
Service层:MenuService
1 /// <summary> 2 /// 获取所有的菜单子项 3 /// </summary> 4 /// <returns></returns> 5 public List<TreeViewNode> GetAllMenu() 6 { 7 string sql = "select MenuId,MenuName,MenuCode,ParentId from MenuList"; 8 List<TreeViewNode> nodeList = new List<TreeViewNode>(); 9 SqlDataReader objRead = SQLHelper.GetReader(sql);10 while (objRead.Read())11 {12 nodeList.Add(new TreeViewNode()13 {14 MenuId = Convert.ToInt32(objRead["MenuId"]),15 MenuName = objRead["MenuName"].ToString(),16 MenuCode = objRead["MenuCode"].ToString(),17 ParentId = objRead["ParentId"].ToString()18 });19 }20 objRead.Close();21 return nodeList;22 }
TreeViewMenu控件:
1 public partial class TreeViewMenu: UserControl 2 { 3 public TreeViewMenu() 4 { 5 InitializeComponent(); 6 Lo.........
版权声明
本文为[程序猿欧文]所创,转载请带上原文链接,感谢
https://my.oschina.net/mikeowen/blog/4709320
边栏推荐
- Stack & queue (go) of data structure and algorithm series
- “微服务”技术另一个可能更合适的名字
- Kubernetes业务日志收集与监控
- el-table动态表头
- 一个简单的能力,决定你是否会学习!
- An attempt to read or write to protected memory occurred using the CopyMemory API. This usually indicates that other memory is corrupted.
- JVM learning (6) - memory model and thread
- Solve the problem of idea shortcut key Alt + insert invalid
- 《内网安全攻防》配套视频 之 利用PS查询域内信息
- 财富自由梦缓?蚂蚁金服暂停上市,监管后估值或下跌
猜你喜欢
配置交换机Trunk接口流量本地优先转发(集群/堆叠)
The choice of domain name of foreign trade self built website
“开源软件供应链点亮计划 - 暑期 2020”公布结果 基于 ChubaoFS 开发的项目获得最佳质量奖
微信视频号播主排行榜2020年10月
【golang】GC详解
List of wechat video Number broadcasters October 2020
Is SEO right or wrong?
使用CopyMemory API出现 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
Mac 终端(terminal) oh-my-zsh+solarized配置
Python zero basics tutorial (01)
随机推荐
Complete set of linked list operations of data structure and algorithm series (3) (go)
Understanding data structures starts with this article~
安卓开发——服务应用,计时器的实现(线程+服务)
微信视频号播主排行榜2020年10月
Mac terminal oh my Zsh + solarized configuration
抢球鞋?预测股市走势?淘宝秒杀?Python表示要啥有啥
Mapstructure detoxifies object mapping
注意.NET Core进行请求转发问题
Looking for better dynamic getter and setter solutions
android studio创建平板模拟器方法
PAT_甲级_1074 Reversing Linked List
10款必装软件,让Windows使用效率飞起!
Kubernetes业务日志收集与监控
The third way to realize webrtc in embedded devices
Download Netease cloud music 10W + music library with Python
走进京东 | 中国空间技术研究院青年创新联盟成员莅临参观京东总部
阿里、腾讯、百度、网易、美团Android面试经验分享,拿到了百度、腾讯offer
使用rem,做到屏幕缩放时,字体大小随之改变
SQL statement to achieve the number of daffodils
After SQL group query, get the first n records of each group