ASP.NET中树形图的实现(3)

发表于:2007-06-30来源:作者:点击数: 标签:
三、修改、移动树节点 由于 服务器 控件不支持鼠标拖动事件,所以不能象 Windows 程序那样通过拖动移动节点,这里是通过选择父节点的方式。移动是通过在原位置删除,新位置添加实现的,要注意在删除时先保存节点信息。 Private Sub TreeView1_SelectedIndexC
     三、修改、移动树节点
    由于服务器控件不支持鼠标拖动事件,所以不能象Windows程序那样通过拖动移动节点,这里是通过选择父节点的方式。移动是通过在原位置删除,新位置添加实现的,要注意在删除时先保存节点信息。
  
  Private Sub TreeView1_SelectedIndexChange(ByVal sender As Object, ByVal e As Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs) Handles TreeView1.SelectedIndexChange
  Dim dv As New DataView()
  dv.Table = ds.Tables("tree")
  Dim tmpNd As TreeNode = TreeNdSel(e.OldNode), tmpNds As TreeNodeCollection
  dv.RowFilter= "NODEID=" & tmpNd.ID
  dv(0)("NODE_DEscript") = Me.TextBox1.Text
  dv(0)("ADDRESS") = Me.TextBox2.Text
  dv(0)("TARGET") = Me.TextBox3.Text
  dv(0)("ICON") = Me.TextBox4.Text
  If dv(0)("PARENTID").ToString <> Me.DropDownList1.SelectedItem.Value Then
  ‘移动节点
  dv(0)("PARENT_NAME") = Me.DropDownList1.SelectedItem.Value
  If Me.DropDownList1.SelectedItem.Value = "ROOT" Then
  tmpNds = TreeView1.Nodes
  Else
  tmpNds = FromIdToNode(Me.DropDownList1.SelectedItem.Value, TreeView1.Nodes).Nodes’新的父节点的Nodes集合
  End If
  GetNdCol(e.OldNode).Remove(tmpNd)
  tmpNds.Add(tmpNd)
  End If
  tmpNd.Text = Me.TextBox1.Text
  tmpNd.ImageUrl = Me.TextBox4.Text
  tmpNd = TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex)
  dv.RowFilter= "NODEID=" & tmpNd.ID
  Me.TextBox1.Text = dv(0)("NODENAME").ToString
  Me.TextBox2.Text = dv(0)("ADDRESS").ToString
  Me.TextBox3.Text = dv(0)("TARGET").ToString
  Me.TextBox4.Text = dv(0)("ICON").ToString
  End Sub
  Private Function FromIdToNode(ByVal ID As String, ByVal Nds As TreeNodeCollection) As TreeNode
  ‘由关键字查找节点
  Dim i As Integer
  Dim tmpNd As TreeNode, tmpNd1 As TreeNode
  For Each tmpNd In Nds
  If tmpNd.ID = ID Then
  Return tmpNd
  Exit Function
  End If
  tmpNd1 = FromIdToNode(ID, tmpNd.Nodes)
  If Not (tmpNd1 Is Nothing) Then
  Return tmpNd1
  Exit Function
  End If
  Next
  Return Nothing
  End Function
  
  四、结束语
  
    以上阐述ASP.NET中树状显示的基本方法,以及如何在对树节点进行维护(增加、删除、修改、移动)的同时,修改数据库数据。由于篇幅所限,笔者在此只对基本思路和流程及关键步骤作了介绍,并未列出详细源代码,读者可自行完善。需要详细源代码者可与我联系,本文程序在VS.NET、SQLServer、Windows 2000、IIS5.0下调试通过。
  
  
  

原文转自:http://www.ltesting.net