手机版

Asp.net treeview实现无限级树实现代码

时间:2021-10-26 来源:互联网 编辑:宝哥软件园 浏览:

先看看效果图

先看看数据库表的设计,数据表主要包括身份证,姓名,父母身份证这三项,其中身份是主键,ParentID对应节点的父节点

方法一:用递归遍历数据,并将节点逐个添加到树形视图中去。 1.先进行数据库连接和数据的读取,并将根节点先添加进树形视图中,并利用递归getTreeView()实现数据的遍历和添加:复制代码代码如下:受保护的无效页面_加载(对象发送方,EventArgs e) { if(!页面. IsPostBack){ TreeNode节点类别;连接conn=新连接();listCategory=conn . GetCategory();堆栈类别存储类别=新堆栈类别();商店类别.推送(类别[0]);节点类别=新树节点(类别[0].Name.Trim(),类别[0].身份证。trim());树形视图1。节点。添加(节点类别);getTreeView(storeCategory,Category,节点类别);} } 2.数据遍历的递归函数,比较简单就不多说了。复制代码代码如下: public void getTreeView(statkcategory categoryStack,ListCategory categoryList,树节点e){ Category tmp;if(categoryStack .Count0) { tmp=categoryStack .pop();for(int I=0;icategoryList .计数;I)if(categoryList[I]。ParentId。Trim()==tmp .身份证。Trim()) { categoryStack .push(categoryList[I]);树节点子注释=新树节点(类别列表[I]。名字。trim(),类别列表[I]。身份证。trim());添加(儿童笔记);getTreeView(categoryStack,categoryList,childNote);} } } 方法二:用TreeView1_TreeNodePopulate(对象发送方,TreeNodeEventArgs e)事件响应来逐个读取子节点。 1.第一步基本和上一方法的第一步一致,只是要将节点的设置为不展开。复制代码代码如下:受保护的无效页面_加载(对象发送方,EventArgs e) { if(!页面. IsPostBack){ TreeNode节点类别;连接conn=新连接();listCategory=conn . GetCategory();节点类别=新树节点(类别[0].Name.Trim(),类别[0].身份证。trim());节点类别人口需求=真节点类别。塌陷();节点类别NavigateUrl=' http://博客。csdn。net/longlonglongago 2000 ';节点类别目标=' _ blank树形视图1。节点。添加(节点类别);} } 2.再改写TreeView1_TreeNodePopulate(),根据鼠标的点击得到该节点的身份证,然后根据该身份进行数据的读取,将其下的子节点读出。复制代码代码如下:受保护的void TreeView1_TreeNodePopulate(对象发送方,tree node eventargs e){ int categoryID=int 32 .解析(如节点值);连接conn=新连接();listCategory=conn . GetCategory();foreach(类别中的类别tmp){ if(categoryID .ToString()==tmp .ParentId。Trim()){树节点子注释=新树节点(tmp .名称。Trim(),tmp .身份证。trim());foreach(类别中的类别类别){ if (tmp).身份证。Trim()==cate .ParentId。Trim()) { childNote .人口需求=真儿童笔记。塌陷();打破;} else childNote .expand();}儿童笔记.NavigateUrl=' http://博客。csdn。net/longlonglongago 2000 ';儿童笔记目标=' _ blank添加(儿童笔记);} } 以上两种方法都可以实现无限级分类,不过第一种方法显然更好一些,第二种方法不可以实现全部展开功能,而第一种可以。

版权声明:Asp.net treeview实现无限级树实现代码是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。