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 一个弹出窗口的问题!! .NET服务上WEB配置不允许子节点 发送邮件的问题,如何提示“邮件内容为HTML格式,请选择HTML方式查看” 关于Cookie跳转页面的问题 BeginRequest的时候Request是否一定完全发送到服务器了(例如上传大文件)?以及若干Stream相关问题。 数据库连接对象Conn关闭的问题,谢谢 能不能用Visio做的流程图 AspNetPager 使用URL分页时,如何带多个参数? Forms 验证,如何用户每次操作延长过期时间 关于FrameSet查看设计图的问题???? 求救,关于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