1:建立資料庫 在SQL SERVER 2000裡建立一個表tbTree,表的結構設計如下: 列名 資料類型 描述 長度 主鍵 ID Int 節點編号 4 是 ParentID Int 父節點編号 4 ConText Nvarchar 我們要顯示的節點内容 50 在SQL SERVER 2000中建表的腳本: CREATE TABLE [dbo].[tbTree] ( [ID] [int] NOT NULL , [Context] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [ParentID] [int] NULL ) ON [PRIMARY] 在表中添加如下記錄: insert tbtree (ID,Context,ParentID) values ( 1,'中國',0) insert tbtree (ID,Context,ParentID) values ( 2,'北京',11) insert tbtree (ID,Context,ParentID) values ( 3,'天津',11) insert tbtree (ID,Context,ParentID) values ( 4,'河北省',1) insert tbtree (ID,Context,ParentID) values ( 5,'廣東省',1) insert tbtree (ID,Context,ParentID) values ( 6,'廣州',5) insert tbtree (ID,Context,ParentID) values ( 7,'四川省',1) insert tbtree (ID,Context,ParentID) values ( 8,'成都',7) insert tbtree (ID,Context,ParentID) values ( 9,'深圳',5) insert tbtree (ID,Context,ParentID) values ( 10,'石家莊',4) insert tbtree (ID,Context,ParentID) values ( 11,'遼甯省',1) insert tbtree (ID,Context,ParentID) values ( 12,'大連',11) insert tbtree (ID,Context,ParentID) values ( 13,'上海',1) insert tbtree (ID,Context,ParentID) values ( 14,'天河軟體園',6) insert tbtree (ID,Context,ParentID) values ( 15,'汕頭',5) ********************************************************************** 2.添加一個新頁面,放置一個TreeView控件 3.頁面代碼如下:主要是用到了遞歸算法 DataSet ds = new DataSet(); private void Page_Load(object sender, System.EventArgs e) { if (!IsPostBack) { // 在此處放置使用者代碼以初始化頁面 SqlConnection CN = new SqlConnection(); try { // 初始化連接配接字元串 CN.ConnectionString = "Data Source=A21D1656E2B7442//SQL2000;Initial Catalog=xiazai;Integrated Security=True"; CN.Open(); // 添加指令,從資料庫中得到資料 SqlCommand sqlCmd = new SqlCommand(); sqlCmd.Connection = CN; sqlCmd.CommandText = "select * from tbTree"; sqlCmd.CommandType = CommandType.Text; SqlDataAdapter adp = new SqlDataAdapter(sqlCmd); adp.Fill(ds); } catch (Exception ex) { throw (ex); } finally { CN.Close(); } // 調用遞歸函數,完成樹形結構的生成 //tn2=AddTree(0, (TreeNode)null); //TreeView1.Nodes.Add(tn2); 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 = "[PARENTID] = " + ParentID; foreach (DataRowView Row in dvTree) { if (pNode == null) { //'? 添加根節點 tn1.Text = Row["ConText"].ToString(); TreeView1.Nodes.Add(tn1); tn1.Expanded = true; AddTree(Int32.Parse(Row["ID"].ToString()), tn1); // 再次遞歸 } else { // 添加目前節點的子節點 TreeNode tn2 = new TreeNode(); tn2.Text = Row["ConText"].ToString(); //pNode.Nodes.Add(tn2); pNode.ChildNodes.Add(tn2); tn1.Expanded = true; AddTree(Int32.Parse(Row["ID"].ToString()), tn2); // 再次遞歸 } } }