1.建表(SQL Server)
2.在页面上放一个Treeview1,然后写代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
using System.Data.SqlClient;

public partial class treeview2 : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)

{
SqlConnection myConn = new SqlConnection("user id=sa;password=123;Database =test;data source=jeff;");
try

{
//初始化连接字符串
SqlDataAdapter myAdapter = new SqlDataAdapter("select * from menu order by parentID ", myConn); ;
DataSet ds = new DataSet();
myAdapter.Fill(ds);
this.ViewState["ds"] = ds;
}
catch (Exception ex)

{
Session["Error"] = ex.ToString();
}
finally

{
myConn.Close();
}
//调用递归函数,完成树形结构的生成
AddTree(0, (TreeNode)null);

}


//递归添加树的节点
public void AddTree(int ParentID, TreeNode pNode)

{
DataSet ds = (DataSet)this.ViewState["ds"];
DataView dvTree = new DataView(ds.Tables[0]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "[PARENTID] = " + ParentID;

foreach (DataRowView Row in dvTree)

{
TreeNode Node = new TreeNode();
if (pNode == null)

{ //添加根节点
Node.Text = Row["Title"].ToString();
TreeView1.Nodes.Add(Node);
Node.Expanded = true;
AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归
}
else

{ //̀添加当前节点的子节点
Node.Text = Row["Title"].ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = true;
AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归
}
}
}

}
CREATE TABLE menu
(
ID int IDENTITY (1, 1) NOT NULL ,
Title varchar(50) NULL ,
url varchar(50) null,
description varchar(50) null,
ParentID int NULL
) ON PRIMARY
(
ID int IDENTITY (1, 1) NOT NULL ,
Title varchar(50) NULL ,
url varchar(50) null,
description varchar(50) null,
ParentID int NULL
) ON PRIMARY
2.在页面上放一个Treeview1,然后写代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
using System.Data.SqlClient;
public partial class treeview2 : System.Web.UI.Page

{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection myConn = new SqlConnection("user id=sa;password=123;Database =test;data source=jeff;");
try
{
//初始化连接字符串
SqlDataAdapter myAdapter = new SqlDataAdapter("select * from menu order by parentID ", myConn); ;
DataSet ds = new DataSet();
myAdapter.Fill(ds);
this.ViewState["ds"] = ds;
}
catch (Exception ex)
{
Session["Error"] = ex.ToString();
}
finally
{
myConn.Close();
}
//调用递归函数,完成树形结构的生成
AddTree(0, (TreeNode)null);
}

//递归添加树的节点
public void AddTree(int ParentID, TreeNode pNode)
{
DataSet ds = (DataSet)this.ViewState["ds"];
DataView dvTree = new DataView(ds.Tables[0]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "[PARENTID] = " + ParentID;
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{ //添加根节点
Node.Text = Row["Title"].ToString();
TreeView1.Nodes.Add(Node);
Node.Expanded = true;
AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归
}
else
{ //̀添加当前节点的子节点
Node.Text = Row["Title"].ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = true;
AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归
}
}
} 
}
本文介绍如何使用SQLServer创建一个菜单表,并通过ASP.NET在网页上构建动态的树形菜单结构。具体步骤包括:建立菜单表结构、设置SQL连接、查询菜单数据并填充到数据集,最后使用递归方法生成树形菜单。
419

被折叠的 条评论
为什么被折叠?



