Flytte treeview nodes interaktivt
Nu har jeg bakset med det længe nok. Jeg skal interaktivt flytte nodes/branches på en træstruktur: vælge en node og dens children, hægte dem af træet et sted og tilføje et andet sted.Jeg gør det ved at klikke på den node som skal hægtes af, og huske den. Det næste klik markerer den node hvor den afhægtede node skal tilføjes. Det virker som vinden blæser, og jeg har stirret mig blind.
Prøv lige selv at se hvad der sker, hvis en node som allerede har children, skal hægtes af.
kode:
Partial Class Deps
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Departments(10) As String
Departments(0) = "Dept1"
Departments(1) = "Dept2"
Departments(2) = "Dept3"
Departments(3) = "Dept4"
Departments(4) = "Dept5"
Departments(5) = "Dept6"
Departments(6) = "Dept7"
Departments(7) = "Dept8"
Departments(8) = "Dept9"
Departments(9) = "Dept10"
Dim mytree As TreeView
mytree = TreeView1
If Not Page.IsPostBack Then
Dim root As New TreeNode("root")
mytree.Nodes.Add(root)
For i As Integer = 0 To 10
Dim myNode As New TreeNode
myNode.Text = Departments(i)
root.ChildNodes.Add(myNode)
Response.Write(mytree.Nodes.IndexOf(myNode))
Next
End If
End Sub
Protected Sub TreeView1_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.SelectedNodeChanged
Dim nodeToMove As TreeNode
Dim marked As TreeNode
Dim myIndex As Integer = 0
If IsNothing(Session("nodeToMove")) Then
nodeToMove = TreeView1.SelectedNode
nodeToMove.Parent.ChildNodes.Remove(nodeToMove)
' TreeView1.Nodes.Remove(nodeToMove)
Session("nodeToMove") = nodeToMove
Else
nodeToMove = CType(Session("nodeToMove"), TreeNode)
marked = TreeView1.SelectedNode
marked.ChildNodes.Add(nodeToMove)
Session("nodeToMove") = Nothing
End If
End Sub
End Class
aspx:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Deps.aspx.vb" Inherits="Deps" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<br />
<br />
<asp:TreeView ID="TreeView1" runat="server" ShowExpandCollapse="False" >
</asp:TreeView>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>
</body>
</html>
Hvem har en god idé ?
AFK for quite a while.