当前位置:网站首页>使用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
边栏推荐
- Wealth and freedom? Ant financial services suspended listing, valuation or decline after regulation
- TiDB x 微众银行 | 耗时降低 58%,分布式架构助力实现普惠金融
- Method of creating flat panel simulator by Android studio
- ThinkPHP门面源码解析
- Python zero basics tutorial (01)
- 天啦撸!打印日志竟然只晓得 Log4j?
- Complete set of linked list operations of data structure and algorithm series (3) (go)
- vscode 插件配置指北
- Looking for better dynamic getter and setter solutions
- EFF 认为 RIAA 正在“滥用 DMCA”来关闭 YouTube-DL
猜你喜欢
随机推荐
El table dynamic header
美国大选拜登获胜!硅谷的Python开发者用这种方式调侃懂王
注意.NET Core进行请求转发问题
The middle stage of vivo Monkey King activity
How to ensure that messages are not consumed repeatedly? (how to ensure the idempotent of message consumption)
Using stream to read and write files to process large files
Recommendation system, in-depth paper analysis gbdt + LR
050_ object-oriented
“开源软件供应链点亮计划 - 暑期 2020”公布结果 基于 ChubaoFS 开发的项目获得最佳质量奖
共创爆款休闲游戏 “2020 Ohayoo游戏开发者沙龙”北京站报名开启
Safety (miscellany)
GLSB涉及负载均衡算法
Wealth and freedom? Ant financial services suspended listing, valuation or decline after regulation
Adobe experience design / XD 2020 software installation package (with installation tutorial)
Android 复选框 以及回显
向北京集结!OpenI/O 2020启智开发者大会进入倒计时
Handwriting Koa.js Source code
Stack & queue (go) of data structure and algorithm series
【golang】GC详解
关于无相互作用极化率的计算





