递归构造树 treeview
来源:互联网 发布:网络机柜布线规范 编辑:程序博客网 时间:2024/05/21 16:56
树形结构在开发中的应用
撰文: 李洪根
本文首发于《CSDN开发高手》2003年第十二期
概述
树形结构的展示方式
数据库设计
CREATE TABLE [dbo].[tbTree] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Context] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[ParentID] [int] NULL
) ON [PRIMARY]
SET IDENTITY_INSERT tbtree ON
insert tbtree (ID,Context,ParentID) values ( 1,'中国',0)
insert tbtree (ID,Context,ParentID) values ( 2,'北京',11)
insert tbtree (ID,Context,ParentID) values ( 3,'天津',1)
insert tbtree (ID,Context,ParentID) values ( 4,'河北省',1)
insert tbtree (ID,Context,ParentID) values ( 5,'广东省',1)
insert tbtree (ID,Context,ParentID) values ( 6,'广州',5)
insert tbtree (ID,Context,ParentID) values ( 7,'四川省',1)
insert tbtree (ID,Context,ParentID) values ( 8,'成都',7)
insert tbtree (ID,Context,ParentID) values ( 9,'深圳',5)
insert tbtree (ID,Context,ParentID) values ( 10,'石家庄',4)
insert tbtree (ID,Context,ParentID) values ( 11,'辽宁省',1)
insert tbtree (ID,Context,ParentID) values ( 12,'大连',11)
insert tbtree (ID,Context,ParentID) values ( 13,'上海',1)
insert tbtree (ID,Context,ParentID) values ( 14,'天河软件园',6)
insert tbtree (ID,Context,ParentID) values ( 15,'汕头',5)
SET IDENTITY_INSERT tbtree off
在C# 中实现:
.NET使用递归填充TreeView
文章分类:.net编程最近在做一个信息管理系统的后台,打算用树型结构显示导航列表,用一般的遍历实现不了这样无限级别的导航,所以使用递归.
一.数据库表结构大致是这样:
ID Name(导航名) ParentID(对应父级)
1 后台管理 0
2 人员管理 1
3 系统人员 2
4 员工管理 3
5 单位管理 1
6 基础资料 0
7 客户管理 6
8 商品管理 6
……
还有很多属性,这里就不列举出来了,在日后将推出权限方面的文章再提及其他属性,为了思路清晰,实现树绑定仅这些列足够.
预期效果:
- 后台管理
- 人员管理
系统人员
员工管理
- 单位管理
- 基础资料
- 客户管理
- 商品管理
(针对列举的数据只有3层,我们要做的是无限级别)
二.初期准备:新建Asp.net页面,从导航控件盒拖入TreeView控件
三.思路:
遍历找出没有父级的节点A,如果有下级节点则将下级节点B添加到A的子集,如果B也拥有下级节点C,则将C添加到B的子集,……从这规律我们可以推导出需要遍历的地方以及参数包括 当前节点ID,当前节点实体.以下是代码:
- //得到导航列表
- private List<Model.Sys_Navigation> NavList = new BLL.Sys_Navigation().GetList();
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- //执行绑定
- CreateTree();
- }
- }
- #region 递归绑定树控件
- private void CreateTree()
- {
- foreach (Model.Sys_Navigation model in NavList.Where(p => p.ParentID == 0))
- {
- TreeNode ParentNode = new TreeNode(model.Name, model.ID.ToString());
- TreeView1.Nodes.Add(ParentNode);
- GetChildNodes(ParentNode);
- }
- }
- private void GetChildNodes(TreeNode ParentNode)
- {
- foreach (Model.Sys_Navigation model in NavList.Where(p => p.ParentID == MyConvert.toInt32(ParentNode.Value)))
- {
- TreeNode ChildNode = new TreeNode(model.Name, model.ID.ToString());
- if (NavList.Exists(p => p.ParentID == model.ID)) GetChildNodes(ChildNode);
- ParentNode.ChildNodes.Add(ChildNode);
- }
- }
- #endregion
- 递归构造树 treeview
- C#数据库递归构造treeview树形结构
- C#数据库递归构造TreeView树形结构
- TreeView递归生成树
- 递归TreeView 目录树
- TreeView动态构造多级树
- c# treeview 递归生成树
- 循环递归treeview节点树
- TreeView 递归
- treeview递归
- delphi中父母表示法递归构造treeview(在递归函数之外查询数据库)
- delphi中父母表示法递归构造treeview(在递归函数之外查询数据库)
- TreeView递归法绑定树控件
- ASP.NET 递归 生成树 TreeView
- TreeView递归法绑定树控件
- 使用递归结合TreeView完成树结构
- TreeView目录树递归数据源代码
- TreeView目录树递归数据源代码 .
- java程序设计基础教程第二版: p212_12
- weblogic配置启动类
- java程序设计基础教程第二版: p211_10
- session1占用的undo blocks计算出session1修改的数据量
- 后台执行命令
- 递归构造树 treeview
- 倒插法实现链表逆置
- C# API
- java程序设计基础教程第二版: p211_9
- java程序设计基础教程第二版: p211_8
- java程序设计基础教程第二版: p211_6
- java程序设计基础教程第二版: p211_5
- 漫谈Linux下的音频问题
- 设计模式之观察者(Observer)模式与其C++通用实现(中)