數據庫Table
==============================================
int key int nvarchar(100) nvarchar(100) nvarchar(100) nvarchar(100)
NODE_ID PARENT_ID NODE_NAME ADDRESS IMAGE_URL SELECT_IMAGE_URL
1 0 node_1 http://* *.gif *.gif
2 1 node_1_1 http://* *.gif *.gif
3 2 node_1_1_1 http://* *.gif *.gif
4 0 node_2 http://* *.gif *.gif
5 4 node_2_1 http://* *.gif *.gif
6 5 node_2_1_1 http://* *.gif *.gif
7 0 node_3 http://* *gif *.gif
8 7 node_3_1 http://* *.gif *.gif
==============================================
代碼程序:
==============================================
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Components;
using Microsoft.Web.UI.WebControls;
namespace Register
{
/// <summary>
/// WebForm1 的摘要說明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected Microsoft.Web.UI.WebControls.TreeView tvList;
private SqlControl objSqlControl;
private DataTable objDataTable;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此處放置用戶代碼以初始化頁面
if ( ! Page.IsPostBack )
{
objSqlControl = new SqlControl();
TreeNode node = new TreeNode();
objDataTable = objSqlControl.SelectData(); //取得所有數據得到DataTable
this.CreateTree( tvList.Nodes,"0" ); //建立節點
}
}
private void CreateTree( TreeNodeCollection node,string parent_id )
{
DataView dvList = new DataView( this.objDataTable );
dvList.RowFilter = "PARENT_ID='" + parent_id + "'"; //過濾父節點
TreeNode nodeTemp;
foreach ( DataRowView dv in dvList )
{
nodeTemp = new TreeNode();
nodeTemp.ID = dv["NODE_ID"].ToString(); //節點ID
nodeTemp.Text = dv["NODE_NAME"].ToString(); //節點名稱
nodeTemp.NavigateUrl = dv["ADDRESS"].ToString(); //節點鏈接地址
nodeTemp.ImageUrl = dv["IMAGE"].ToString(); //節點圖片(未展開)
nodeTemp.SelectedImageUrl = dv["IMAGE_EX"].ToString(); //節點圖片(展開)
nodeTemp.Target = "_parent"; //節點鏈接Target
node.Add( nodeTemp ); //加入節點
this.CreateTree( nodeTemp.Nodes,nodeTemp.ID ); //遞歸
}
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1288602
****************************************************************************************************
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
DataSet ds=new DataSet(); //定義一個DataSet
ConnSql connsql=new ConnSql();
private void Page_Load(object sender, System.EventArgs e)
{
// 在此處放置用戶代碼以初始化頁面
test();
}
#region Web 窗體設計器生成的代碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
public void test()
{
// string sql="select * from Members";
string sql="select *,l.Level_Name from members m inner join member_Level l on m.Level_ID=l.Level_ID";
ds=connsql.ExecutesqlDS(sql);
//調用遞歸函數,完成樹形結構的生成
AddTree(0, (TreeNode)null);
}
public void AddTree(int ParentID,TreeNode pNode)
{
TreeNode tn1=new TreeNode();
DataView dvTree = new DataView(ds.Tables[0]);
//過濾ParentID,得到當前的所有子節點
dvTree.RowFilter = "[User_ParentID] = " + ParentID;
// dvTree.RowFilter = "[User_ParentID] = " + ParentID;
foreach(DataRowView Row in dvTree)
{
if(pNode == null)
{ //添加根節點
tn1.Text=Row["User_Account"].ToString()+'/'+Row["User_Name"].ToString()+'/'+Row["Level_Name"].ToString();
TreeView1.Nodes.Add(tn1);
tn1.Expanded=true;
AddTree(Int32.Parse(Row["User_ID"].ToString()),tn1); //再次遞歸
}
else
{ //添加當前節點的子節點
TreeNode tn2=new TreeNode();
tn2.Text=Row["User_Account"].ToString()+'/'+Row["User_Name"].ToString()+'/'+Row["Level_Name"].ToString();
pNode.Nodes.Add(tn2);
tn1.Expanded=true;
AddTree(Int32.Parse(Row["User_ID"].ToString()),tn2); //再次遞歸
}
}
}