本文展示如何利用递归生成Treeview,满足站点导航的需要。废话不多讲,直接上代码。
一.数据库结构
Code
<!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->1
CREATE
TABLE
[
dbo
]
.
[
MenuTable
]
(
2
[
MenuID
]
[
int
]
IDENTITY
(
1
,
1
)
NOT
NULL
,
3
[
MenuName
]
[
nvarchar
]
(
50
)COLLATEChinese_PRC_CI_AS
NULL
,
4
[
MenuUrl
]
[
nvarchar
]
(
50
)COLLATEChinese_PRC_CI_AS
NULL
,
5
[
ParentID
]
[
int
]
NULL
6
)
ON
[
PRIMARY
]
写入几条数据进去 INSERT INTO MenuTable VALUES('网易','http://www.163.com','0')
INSERT INTO MenuTable VALUES('网易邮箱','http://mail.163.com','1')
INSERT INTO MenuTable VALUES('新浪','http://www.sina.com','0')
二.用户控件代码(HTML)
Code
<!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->1
<%
@ControlLanguage
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Navigation.ascx.cs
"
Inherits
=
"
Navigation
"
%>
2
3
<
asp:TreeView
ID
="tvPet"
runat
="server"
></
asp:TreeView
>
三.后台CS代码
Code
<!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->1
using
System;
2
using
System.Data;
3
using
System.Configuration;
4
using
System.Collections;
5
using
System.Web;
6
using
System.Web.Security;
7
using
System.Web.UI;
8
using
System.Web.UI.WebControls;
9
using
System.Web.UI.WebControls.WebParts;
10
using
System.Web.UI.HtmlControls;
11
12
using
Model;
13
using
System.Collections.Generic;
14
using
localhost;
15
16
public
partial
class
Navigation:System.Web.UI.UserControl
17
{
18
protected
void
Page_Load(
object
sender,EventArgse)
19
{
20
if
(
!
IsPostBack)
21
{
22
this
.ViewState.Add(
"
TreeMenuSource
"
,GetTreeData());
23
InitTreeView(
0
,
null
);
24
}
25
}
26
27
///
<summary>
28
///
递归产生树
29
///
</summary>
30
///
<paramname="pid"></param>
31
///
<paramname="pNode"></param>
32
protected
void
InitTreeView(
int
pid,TreeNodepNode)
33
{
34
35
List
<
MenuTableInfo
>
listMT
=
(List
<
MenuTableInfo
>
)
this
.ViewState[
"
TreeMenuSource
"
];
36
List
<
MenuTableInfo
>
subTreeMenu
=
listMT.FindAll(
delegate
(MenuTableInfomt)
37
{
38
if
(mt.ParentID
==
pid)
39
return
true
;
40
return
false
;
41
});
42
43
foreach
(MenuTableInfomInfo
in
subTreeMenu)
44
{
45
TreeNodenode
=
new
TreeNode();
46
node.Text
=
mInfo.MenuName;
47
node.Expanded
=
true
;
48
node.Value
=
mInfo.MenuID.ToString();
49
node.NavigateUrl
=
mInfo.MenuUrl;
50
51
if
(pNode
==
null
)
52
{
53
this
.tvPet.Nodes.Add(node);
54
}
55
else
56
{
57
pNode.ChildNodes.Add(node);
58
}
59
InitTreeView(mInfo.MenuID,node);
60
}
61
}
62
63
///
<summary>
64
///
获得TreeViewData
65
///
</summary>
66
///
<returns></returns>
67
protected
List
<
MenuTableInfo
>
GetTreeData()
68
{
69
GetDateFromServerws
=
new
GetDateFromServer();
70
List
<
MenuTableInfo
>
listMenuTable
=
new
List
<
MenuTableInfo
>
();
71
DataTabledt
=
ws.GetMenuTable().Tables[
0
];
72
73
foreach
(DataRowdr
in
dt.Rows)
74
{
75
MenuTableInfomt
=
new
MenuTableInfo();
76
mt.MenuID
=
Convert.ToInt32(dr[
"
MenuID
"
]);
77
mt.MenuName
=
dr[
"
MenuName
"
].ToString();
78
mt.MenuUrl
=
dr[
"
MenuUrl
"
].ToString();
79
mt.ParentID
=
Convert.ToInt32(dr[
"
ParentID
"
]);
80
listMenuTable.Add(mt);
81
}
82
return
listMenuTable;
83
}
84
}
85
四.效果
分享到:
相关推荐
使用递归方法动态生成TreeView!,动态更改节点显示的图片!
运用递归生成树形结构控件.NET Treeview 这是我在网上收集的,不是本人编的,不过本人用了,还感觉不错
C# 递归生成树型菜单,源码中包含了数据库,可直接可运行程序,代码有注释,易懂
//递归生成树函数 public void AddTree(int ParentID, TreeNode pNode) { DataTable dt = new DataTable(); dt = tblDatas; DataView dvTree = new DataView(dt); //过滤ParentID,得到当前的所有子节点 ...
C# winform TreeView递归文件夹
这是一个学习ASP.NET treeview控件的demo,通过递归生成一棵部门树。部门表结构在解决方案中。解压密码: 1435279215
WPF TreeView绑定集合生成树 WPF TreeView绑定集合生成树
本文实例讲述了asp.net TreeView递归循环子节点生成树形菜单的方法。分享给大家供大家参考,具体如下: 这里主要用到递归循环获取子结点 /// /// 生成根节点 /// /// <param name=treeview> protected void Bind...
文档讲述了常用的树形控件和菜单控件的使用技巧以及怎样实现怎么根据需要动态生成,和一些常用属性的讲解以及常用的一些功能的实现。
使用struts2,jquery,jquery插件treeview以及json动态生成一棵目录树,下载后可以直接运行,供学习使用
以前用递归总不明白,所以写个实例供大家参考 有数据库表的格式 一看就明白,就几行,还有个组建 treeview 给注了
vb增强型Treeview树形视图菜单控件,自带5个树形菜单应用实例,并结合了Access数据库,支持动态读取数据库生成TreeView,并且支持较复杂的数据关联、递归纪录连接、多数据关联、多层嵌套、自定义过滤标准、自定义SQL...
Treeview的递归生成(ADO+ACCESS) 1.ADO+ACCESS万能连接, 2.TREEVIEW的递归生成, 3.异构数据。
Treeview的递归生成(ADO+ACCESS) 1.ADO+ACCESS万能连接,2.TREEVIEW的递归生成,3.异构数据。
利用XML生成treeview ,可以根据节点values值生成不同根节点的树
演示如何使用树状控件,使用递归算法,生成无限级的树状控件
刚我在做Tree view 绑定时自己摸索了一下,网上有人说TreeView绑定数据源,用什么递归绑定啥的,我不想看了,就自己试着写了一个我是这样做的,如果有什么问题请大神指导,我是菜鸟额..1:页面TreeView 叫tvFunction2...
C# WInform TreeLiew资源文件Demo 是我最近做T4模板生成器开发的一个子窗体。 其实现了对磁盘文件的递归加载预览,TreeView的右键菜单,包含文件或文件夹的重命名,新增,删除。。等等操作