成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解ASP.NET樹形圖

開發 后端
本文介紹用Internet Explorer WebControls開發ASP.NET樹形圖的方法,由于樹形圖結構較復雜,使用起來常不知如何下手。

ASP.NET樹形圖用于顯示按照樹形結構進行組織的數據,其用途比較廣泛,如計算機中的文件系統(Windows中的資源管理器)、企業或公司的組成結構等。我們知道在Windows下VB、PB、Delphi等工具提供了一個功能很強的樹型控件TreeView,利用Treeview控件可以方便地開發樹形圖。然而在網頁上實現樹形圖就不那么容易了,現在在ASP.NET中利用微軟提供的Internet Explorer WebControls它使得網頁上的樹形圖開發與在Windows下一樣的方便,一樣的功能強大,甚至更靈活。


本文介紹用Internet Explorer WebControls開發ASP.NET樹形圖的方法,由于樹形圖結構較復雜,使用起來常不知如何下手。筆者結合最近剛為公司用ASP.NET編寫的應用程序管理器這一具體實例,詳細闡述在ASP.NET下如何將Internet Explorer WebControls的使用與數據庫聯系起來,實現數據分任意多層顯示,方便地進行增加、修改、刪除、移動操作。筆者希望通過對該實例的闡述,達到拋磚引玉的效果,與各位同仁相互交流,共同進步。

一、樹的建立

具體方法是:創建一個數據庫,設計樹圖信息表TREE_INFO,包含NODEID、PARENTID、NODENAME、ADDERSS、ICON字段,其它字段根據實際業務而定,節點名稱NODENAME將在樹型控件的節點上顯示,NODEID字段保存節點的***標識號,PARENTID表示當前節點的父節點號,標識號組成了一個“鏈表”,記錄了樹上節點的結構。設計一個Web窗體其上放置TreeView控件。

  1. Private Sub CreateDataSet()’建立數據集  
  2. Dim myConn As New SqlConnection()  
  3. Dim myCmd As New SqlCommand("select NODEID,NODENAME,PARENTID,
    ADDRESS,ICON from Tree_info", myConn)  
  4. Dim myDataAdapter As New SqlDataAdapter()  
  5. myConn.ConnectionString = Application("connectstring")  
  6. myCmd.CommandText = "" 
  7. myCmd.Connection = myConn 
  8. myDataAdapter.SelectCommand = myCmd 
  9. myDataAdapter.Fill(ds, "tree")  
  10. End Sub  

建樹的基本思路是:從根節點開始遞歸調用顯示子樹

  1. Private Sub Page_Load(ByVal sender As System.Object, 
    ByVal e As System.EventArgs) Handles MyBase.Load  
  2. CreateDataSet()  
  3. intiTree(TreeView1.Nodes, 0)  
  4. End Sub  
  5. Private Sub intiTree(ByRef Nds As TreeNodeCollection, 
    ByVal parentId As Integer)  
  6. Dim dv As New DataView()  
  7. Dim drv As DataRowView  
  8. Dim tmpNd As TreeNode  
  9. Dim intId As Integer  
  10. dv.Table = ds.Tables("tree")  
  11. dv.RowFilter = "PARENTID=’" & parentId & "’"  
  12. For Each drv In dv  
  13. tmpNd = New TreeNode()  
  14. strId = drv("NODE_ID")  
  15. tmpNd.ID = strId 
  16. tmpNd.Text = drv("NODE_NAME ")  
  17. tmpNd.ImageUrl = drv("ICON").ToString  
  18. Nds.Add(tmpNd)  
  19. intiTree(Nds(Nds.Count - 1).Nodes, intId)  
  20. Next  
  21. End Sub 

二、增加、刪除樹節點

單純在Treeview 上增加、刪除、修改節點只需用Nodes屬性的Add、 Remove、等方法即可,值得注意的地方是VS.NET中Treeview的Nodes集合與VS6.0中的區別,VS6.0中的是一個大的集合,而 VS.NET中的是分層的每個Node下都有Nodes屬性。增加、刪除、修改樹節點時與VS6.0相比有很大差別,特別是刪除時。
Private Sub ButAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButAdd.Click’在選定的節點下添加子節點

  1. Dim tmpNd As New TreeNode(), NdSel As TreeNode  
  2. tmpNd.ID = GetNewId()  
  3. NdSel = TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex)’選中的節點  
  4. tmpNd.Text = "新節點" 
  5. NdSel.Nodes.Add(tmpNd)  
  6. Dim myRow As DataRow  
  7. myRow = ds.Tables("tree").NewRow()  
  8. myRow("NODE_NAME") = tmpNd.ID  
  9. myRow("NODE_DESCRIPT") = "新節點" & tmpNd.ID & "_" & NdSel.ID  
  10. myRow("PARENT_NAME") = NdSel.ID  
  11. ds.Tables("tree").Rows.Add(myRow)  
  12. End Sub  
  13. Private Sub ButDele_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
    Handles ButDele.Click’刪除選中的節點  
  14. Dim idx As String = TreeView1.SelectedNodeIndex()  
  15. GetNdCol(idx).Remove(TreeView1.GetNodeFromIndex(idx))  
  16. Dim dv As New DataView(), recNo As Integer  
  17. dv.Table = ds.Tables("tree")  
  18. dv.RowFilter"NODEID=" & NdId  
  19. dv.Delete(0)  
  20. End Sub  
  21. Private Function GetNdCol(ByVal idx As String) As TreeNodeCollection  
  22. ‘獲得選中節點的父節點的Nodes集合  
  23. Dim cnt As Integer, i As Integer  
  24. Dim tmpNds As TreeNodeCollection  
  25. Dim idxs() As String  
  26. idxs = Split(idx, ".")  
  27. cnt = UBound(idxs)  
  28. If cnt = 0 Then  
  29. tmpNds = TreeView1.Nodes  
  30. Else  
  31. tmpNds = TreeView1.Nodes(CInt(idxs(0))).Nodes  
  32. For i = 1 To cnt - 1  
  33. tmpNdstmpNds = tmpNds(CInt(idxs(i))).Nodes  
  34. Next  
  35. End If  
  36. Return tmpNds  
  37. End Function 

三、修改、移動樹節點

由于服務器控件不支持鼠標拖動事件,所以不能象Windows程序那樣通過拖動移動節點,這里是通過選擇父節點的方式。移動是通過在原位置刪除,新位置添加實現的,要注意在刪除時先保存節點信息。

  1. Private Sub TreeView1_SelectedIndExchange(ByVal sender As Object, 
    ByVal e As Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs) 
    Handles TreeView1.SelectedIndexChange  
  2. Dim dv As New DataView()  
  3. dv.Table = ds.Tables("tree")  
  4. Dim tmpNd As TreeNode = TreeNdSel(e.OldNode), tmpNds As TreeNodeCollection  
  5. dv.RowFilter"NODEID=" & tmpNd.ID  
  6. dv(0)("NODE_DESCRIPT") = Me.TextBox1.Text  
  7. dv(0)("ADDRESS") = Me.TextBox2.Text  
  8. dv(0)("TARGET") = Me.TextBox3.Text  
  9. dv(0)("ICON") = Me.TextBox4.Text  
  10. If dv(0)("PARENTID").ToString <> Me.DropDownList1.SelectedItem.Value Then  
  11. ‘移動節點  
  12. dv(0)("PARENT_NAME") = Me.DropDownList1.SelectedItem.Value  
  13. If Me.DropDownList1.SelectedItem.Value = "ROOT" Then  
  14. tmpNds = TreeView1.Nodes  
  15. Else  
  16. tmpNds = FromIdToNode(Me.DropDownList1.SelectedItem.Value, 
    TreeView1.Nodes).Nodes’新的父節點的Nodes集合  
  17. End If  
  18. GetNdCol(e.OldNode).Remove(tmpNd)  
  19. tmpNds.Add(tmpNd)  
  20. End If  
  21. tmpNd.Text = Me.TextBox1.Text  
  22. tmpNd.ImageUrl = Me.TextBox4.Text  
  23. tmpNd = TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex)  
  24. dv.RowFilter"NODEID=" & tmpNd.ID  
  25. Me.TextBox1.Text = dv(0)("NODENAME").ToString  
  26. Me.TextBox2.Text = dv(0)("ADDRESS").ToString  
  27. Me.TextBox3.Text = dv(0)("TARGET").ToString  
  28. Me.TextBox4.Text = dv(0)("ICON").ToString  
  29. End Sub  
  30. Private Function FromIdToNode(ByVal ID As String, 
    ByVal Nds As TreeNodeCollection) As TreeNode  
  31. ‘由關鍵字查找節點  
  32. Dim i As Integer  
  33. Dim tmpNd As TreeNode, tmpNd1 As TreeNode  
  34. For Each tmpNd In Nds  
  35. If tmpNd.ID = ID Then  
  36. Return tmpNd  
  37. Exit Function  
  38. End If  
  39. tmpNd1 = FromIdToNode(ID, tmpNd.Nodes)  
  40. If Not (tmpNd1 Is Nothing) Then  
  41. Return tmpNd1  
  42. Exit Function  
  43. End If  
  44. Next  
  45. Return Nothing  
  46. End Function 

四、結束語

以上闡述ASP.NET樹形圖,以及如何在對樹節點進行維護(增加、刪除、修改、移動)的同時,修改數據庫數據。由于篇幅所限,筆者在此只對基本思路和流程及關鍵步驟作了介紹,并未列出詳細源代碼,讀者可自行完善。需要詳細源代碼者可與我聯系,本文程序在VS.NET、SQLServer、 Windows 2000、IIS5.0下調試通過。

【編輯推薦】

  1. ASP.NET的DataList和Repeater控件
  2. 淺析ASP.NET的IIS映射
  3. 概述ASP.NET狀態類型
  4. 淺談ASP.NET和Web服務器
  5. ASP.NET的EnableViewState屬性
責任編輯:佚名 來源: IT168
相關推薦

2009-07-29 16:08:07

ASP和ASP.NET

2009-07-22 16:25:41

ASP.NET AJA

2009-07-24 10:14:22

ASP.NET開發

2009-07-28 16:57:50

ASP.NET Ses

2009-08-05 11:14:33

ASP.NET ISA

2009-07-23 13:19:51

2009-07-23 13:09:23

2009-08-19 13:44:00

ASP.NET Lis

2009-08-04 10:43:59

ASP.NET控件開發

2009-07-28 13:39:44

加載ViewStateASP.NET

2009-08-04 18:10:35

ASP.NET動態編譯

2009-08-18 17:50:37

ASP.NET MVC

2022-06-13 10:39:12

JavaScript

2010-03-19 09:17:16

ASP.NET MVC

2009-07-23 13:26:21

2009-08-01 22:47:13

ASP.NET筆試題目ASP.NET

2009-07-30 14:00:21

ASP.NET 2.0

2009-07-22 17:45:35

ASP.NET教程

2009-08-05 17:39:13

ASP.NET常用狀態

2009-07-21 15:38:31

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区福利视频 | 四虎影院欧美 | 免费一区二区三区 | 亚洲精品99 | caoporn免费在线视频 | 夜夜精品浪潮av一区二区三区 | 午夜男人天堂 | 日韩欧美一级精品久久 | 亚洲 中文 欧美 日韩 在线观看 | 91免费在线看 | 亚洲综合大片69999 | 亚洲精品99 | 日韩电影免费在线观看中文字幕 | 亚洲精品不卡 | 亚洲精品麻豆 | 91毛片在线看 | 精品av| 毛片久久久 | 亚洲精品久久久久久久久久久久久 | 精品一区二区三区四区外站 | 久久99精品久久久久久国产越南 | 97色在线视频| 欧洲尺码日本国产精品 | 免费能直接在线观看黄的视频 | 国产精品一二三区 | www.4虎影院| 国产一卡二卡三卡 | 国产成人jvid在线播放 | 久久久成人免费一区二区 | 成人免费视频观看 | 精品国产欧美一区二区三区成人 | 黄色网络在线观看 | 成在线人视频免费视频 | 亚洲色欲色欲www | 黄色免费观看网站 | 91精品国产综合久久久密闭 | 天天干天天操 | 国产区在线视频 | 色婷婷综合网 | 欧美日韩综合一区 | 青青草华人在线视频 |