当前位置:网站首页>使用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
边栏推荐
- vscode 插件配置指北
- Jsliang job series - 08 - handwritten promise
- Handwritten digital image recognition convolution neural network
- Interview summary on November 7, 2020 (interview 12K)
- After SQL group query, get the first n records of each group
- Android 复选框 以及回显
- The middle stage of vivo Monkey King activity
- Dynamo: a typical distributed system analysis
- 微信视频号播主排行榜2020年10月
- Learning notes of nodejs
猜你喜欢

接口测试如何在post请求中传递文件

Android权限大全

Pay attention to the request forwarding problem of. Net core

SQL第二章第三章

Stack & queue (go) of data structure and algorithm series

阿里、腾讯、百度、网易、美团Android面试经验分享,拿到了百度、腾讯offer

Three practical skills of Medical Project Management

Recommendation system, in-depth paper analysis gbdt + LR

iPhone“连到系统上的设备没有发挥作用”原因分析及解决方法 20200105

配置交换机Trunk接口流量本地优先转发(集群/堆叠)
随机推荐
为wget命令设置代理
再读《重构》
20201107第16课,使用Apache服务部署静态网站;使用Vsftpd服务传输文件
Front end code style practice prettier + eslint + git hook + lint staged
A simple ability determines whether you will learn!
Handwriting Koa.js Source code
共创爆款休闲游戏 “2020 Ohayoo游戏开发者沙龙”北京站报名开启
分库分表的 9种分布式主键ID 生成方案,挺全乎的
开源 | HMGNN:异构小图神经网络及其在拉新裂变风控场景的应用
Introduction to zero based im development (4): what is message timing consistency in IM systems?
Understanding task and async await
libssl对CentOS登录的影响
Adobe Experience Design /Xd 2020软件安装包(附安装教程)
配置交换机Trunk接口流量本地优先转发(集群/堆叠)
嘉宾专访|2020 PostgreSQL亚洲大会阿里云数据库专场:樊文凯
Complete set of linked list operations of data structure and algorithm series (3) (go)
JVM学习(五) -执行子系统
SQL statement to achieve the number of daffodils
Looking for better dynamic getter and setter solutions
AI应届生年薪涨到40万了,你现在转行还来得及!