asp.net treeview递归写法(详细!!!)
2007-11-08 11:44
295 查看
最近在写一个treeview,参考了网上很多种写法,终于总结出自己treeview的写法了!!分享给大家。
假设数据库表:
Table-------
idnamefatherid
1a0
2b1
3c1
4d2
5e3
.
.
.
asp页面添加的treeview名称为TreeVieww1,绑定数据库后得到的DataTable名称为dt,需要在treeview中绑定的节点Text为"name",Node为"id",
父节点id为"fatherid",
那么在asp页面可以这样写
protectedvoidPage_Load(objectsender,EventArgse) { if(!IsPostBack) { //获取填充树所需要的DataTable DataTabledt=dtAdapter.GetClass(); //填充树 newtree.AddTree(dt,TreeView1,"name","id","005000000000",(TreeNode)null); } }
其中"005000000000"是我指派给根节点的id(我设置id/fatherid为string类型的),"(TreeNode)null"为设置初始节点的TreeNode为空。下面的方法,
可以放在工程的任何位置,达到重用的目的。
//递归添加树的节点 publicvoidAddTree(DataTabledt,TreeViewtv,stringNodeText,stringNewNode,stringFatherID,TreeNodepNode) { DataViewdvTree=newDataView(dt); //过滤FatherID,得到当前的所有子节点 dvTree.RowFilter="fatherid="+FatherID; foreach(DataRowViewRowindvTree) { TreeNodeNode=newTreeNode(); if(pNode==null) {//添加根节点 Node.Text=Row[NodeText].ToString(); tv.Nodes.Add(Node); Node.Expanded=true; AddTree(dt,tv,NodeText,NewNode,Row[NewNode].ToString(),Node);//再次递归 } else {//添加当前节点的子节点 Node.Text=Row[NodeText].ToString().ToString(); pNode.ChildNodes.Add(Node); Node.Expanded=true; AddTree(dt,tv,NodeText,NewNode,Row[NewNode].ToString(),Node);//再次递归 } } }
[code]************************************************************************************
//获取当前节点路径text>>输入需要获取的节点名称,此函数返回该节点路径
staticstringvaluePath=null; publicstringSearchNode(TreeNodeCollectiontnds,stringtext) {
foreach(TreeNodetndintnds) { if(tnd.Text==text) { if(valuePath==null) valuePath=tnd.ValuePath.ToString(); } else { if(tnd.ChildNodes.Count!=0) { SearchNode(tnd.ChildNodes,text); } } } returnvaluePath; }
[/code]
***********************************************************************************
//获取当前节点的子节点mynode>>当前节点;nodepath>>当前节点的路径 publicvoidprinttree(TreeNodemynode,stringNodePath) { if(NodePath!=mynode.ValuePath) Response.Write(mynode.Value.ToString()+""); NodePath=null;//将路径值归0,不显示当前节点,如果获取的节点要包括当前节点,将样式的两行去掉 if(mynode.ChildNodes.Count!=0) { foreach(TreeNodetempnodeinmynode.ChildNodes) { printtree(tempnode,NodePath); } } }
相关文章推荐
- asp.net treeview递归写法
- 使用asp.net递归的方法来实现treeview的数据绑定
- Asp.net 2.0 TreeView控件使用jQuery无刷新添加节点详细说明
- ASP.net 2005 Treeview 无限分类非递归终极解决方案
- ASP.NET 递归将分类绑定到 TreeView
- ASP.NET 递归将分类绑定到 TreeView
- ASP.NET 2.0中TreeView递归遍历及设置结点展开算法
- asp.net 的TreeView递归加载
- [转]ASP.NET 2.0中TreeView递归遍历及设置结点展开算法
- Asp.net 2.0 TreeView控件使用jQuery无刷新添加节点详细说明
- ASP.Net TreeView递归
- ASP.NET 递归 生成树 TreeView
- JQuery插件中的treeview与asp.net mvc的结合使用实例(转)-附加自己的写法
- asp.net TreeView递归循环子节点生成树形菜单实例
- JQuery插件中的treeview与asp.net mvc的结合使用实例(转)-附加自己的写法
- ASP.net 2005 Treeview 无限分类非地递归终极解决方案
- ASP.net 2005 Treeview 无限分类非地递归终极解决方案
- ASP.NET TreeView 递归绑定数据
- ASP.NET 递归将分类绑定到 TreeView
- ASP.NET通过递归添加树(Treeview)