c# asp.net 树形结构源码? 本帖最后由 zgplyl 于 2011-08-18 10:15:15 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat="server"> <title>无标题页</title></head><body> <form id="form1" runat="server"> <div> <asp:TreeView ID="TreeView1" runat="server" Height="257px" ImageSet="WindowsHelp" Width="142px"> <ParentNodeStyle Font-Bold="False" /> <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" /> <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px" VerticalPadding="0px" /> <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="1px" /> </asp:TreeView> </div> </form></body></html>using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page{ DataView dv; DataTable dt; protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //数据库执行查询的方法就不写了。 Operator op = new Operator(); //这里执行的是:select * from tabmenu dt = op.Query(); //第一次加载时调用方法传参 CreateTree(0, null, dt, this.TreeView1); this.TreeView1.ExpandAll(); } } /// <summary> /// 创建一个树 /// </summary> /// <param name="parentID">父ID</param> /// <param name="node">节点</param> /// <param name="dt">DataTable</param> /// <param name="treeView">TreeView的名称</param> public void CreateTree(int parentID, TreeNode node, DataTable dt, TreeView treeView) { //实例化一个DataView dt = 传入的DataTable dv = new DataView(dt); //筛选(相当于select * from tabMenu where menuParentID = 传入的 parentID) dv.RowFilter = "[menuParentID]=" + parentID; //用foreach遍历dv foreach (DataRowView row in dv) { //第一次加载时为空 if (node == null) { //创建根节点 TreeNode root = new TreeNode(); //必须与数据库的对应 root.Text = row["menuName"].ToString(); root.Value = row["menuID"].ToString(); //添加根节点 this.TreeView1.Nodes.Add(root); //递归调用方法本身 CreateTree(int.Parse(row["menuID"].ToString()), root, dt, treeView); } else { //添加子节点 TreeNode childNode = new TreeNode(); childNode.Text = row["menuName"].ToString(); childNode.Value = row["menuID"].ToString(); node.ChildNodes.Add(childNode); CreateTree(int.Parse(row["menuID"].ToString()), childNode, dt, treeView); } } }}数据库创建create table tabMenu ( menuID int identity(1,1) primary key,--自动编号 menuParentID int not null,--上级菜单的编号 menuName varchar(20) not null,--菜单名称 menuUrl varchar(20) not null,--菜单地址 menuImage varchar(20) not null, --图片地址 menuTarget varchar(20) not null,--打开方式 ) go --0表示根节点 insert into tabMenu values(0,'xx后台管理','','','') --1子节点 insert into tabMenu values(1,'学生管理','','','') insert into tabMenu values(1,'班级管理','','','') --2级节点 insert into tabMenu values(2,'S1','','','') insert into tabMenu values(2,'S2','','','') insert into tabMenu values(2,'s3','','','') --3级节点 insert into tabMenu values(3,'S1','','','') insert into tabMenu values(3,'S2','','','') insert into tabMenu values(3,'s3','','','') insert into tabMenu values(4,'Ccc','','','') insert into tabMenu values(5,'bbb,'','','') insert into tabMenu values(6,'fff','','','') -- insert into tabMenu values(7,'stu1','','','') insert into tabMenu values(8,'stu2','','','') insert into tabMenu values(9,'stu1','','','') select * from tabMenu go DXperience的重编译问题 全部55分家当求往datatable插入多行数据的写法 电子商务精英进—无分—提前申明 jmail发送邮件问题 静态网页,怎么把实现回复,留言功能! 请问,如何将JS里面的变量传给ASP.net函数?多谢各位了! 大型的远程教学站点用哪一种方法保存用户的session状态最好? 在datagrid中用模板列做超链接,如何弹出窗口,这样的连接如何写呢????? 请教简单问题!! 自定义控件能否做成容器? 求救,关于2个小系统想整合成1个系统 Mvc3.0 js验证问题
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server" Height="257px" ImageSet="WindowsHelp"
Width="142px">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px"
VerticalPadding="0px" />
<NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px"
NodeSpacing="0px" VerticalPadding="1px" />
</asp:TreeView>
</div>
</form>
</body>
</html>using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page
{
DataView dv;
DataTable dt; protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//数据库执行查询的方法就不写了。
Operator op = new Operator();
//这里执行的是:select * from tabmenu
dt = op.Query();
//第一次加载时调用方法传参
CreateTree(0, null, dt, this.TreeView1);
this.TreeView1.ExpandAll();
}
} /// <summary>
/// 创建一个树
/// </summary>
/// <param name="parentID">父ID</param>
/// <param name="node">节点</param>
/// <param name="dt">DataTable</param>
/// <param name="treeView">TreeView的名称</param>
public void CreateTree(int parentID, TreeNode node, DataTable dt, TreeView treeView)
{
//实例化一个DataView dt = 传入的DataTable
dv = new DataView(dt);
//筛选(相当于select * from tabMenu where menuParentID = 传入的 parentID)
dv.RowFilter = "[menuParentID]=" + parentID;
//用foreach遍历dv
foreach (DataRowView row in dv)
{
//第一次加载时为空
if (node == null)
{
//创建根节点
TreeNode root = new TreeNode();
//必须与数据库的对应
root.Text = row["menuName"].ToString();
root.Value = row["menuID"].ToString();
//添加根节点
this.TreeView1.Nodes.Add(root);
//递归调用方法本身
CreateTree(int.Parse(row["menuID"].ToString()), root, dt, treeView);
}
else
{
//添加子节点
TreeNode childNode = new TreeNode();
childNode.Text = row["menuName"].ToString();
childNode.Value = row["menuID"].ToString();
node.ChildNodes.Add(childNode);
CreateTree(int.Parse(row["menuID"].ToString()), childNode, dt, treeView);
}
} }
}
数据库创建
create table tabMenu
(
menuID int identity(1,1) primary key,--自动编号
menuParentID int not null,--上级菜单的编号
menuName varchar(20) not null,--菜单名称
menuUrl varchar(20) not null,--菜单地址
menuImage varchar(20) not null, --图片地址
menuTarget varchar(20) not null,--打开方式
)
go
--0表示根节点
insert into tabMenu
values(0,'xx后台管理','','','')
--1子节点
insert into tabMenu
values(1,'学生管理','','','')
insert into tabMenu
values(1,'班级管理','','','')
--2级节点
insert into tabMenu
values(2,'S1','','','')
insert into tabMenu
values(2,'S2','','','')
insert into tabMenu
values(2,'s3','','','')
--3级节点
insert into tabMenu
values(3,'S1','','','')
insert into tabMenu
values(3,'S2','','','')
insert into tabMenu
values(3,'s3','','','')
insert into tabMenu
values(4,'Ccc','','','')
insert into tabMenu
values(5,'bbb,'','','')
insert into tabMenu
values(6,'fff','','','')
--
insert into tabMenu
values(7,'stu1','','','')
insert into tabMenu
values(8,'stu2','','','')
insert into tabMenu
values(9,'stu1','','','')
select * from tabMenu
go