vb.net中.....的treeview如何绑定数据库动态显示并且能动态增删节点并写回数据库........本人使用...VS2008+access数据库。
注:是在WEB下面。

解决方案 »

  1.   

    http://topic.csdn.net/u/20100802/16/031c7556-401a-4178-b078-13f17694574a.html?79164
      

  2.   

    上面是C#的哟,我用的是VB.net咧。代码我用软件转换了。有些转换不过来。
      

  3.   

    没有人回答哦!难道没有人用过VB。NET做过
      

  4.   

    http://www.open-open.com/ajax/Tree.htm
      

  5.   

    删除节点,  本人试过好用. if (目录节点== "0")
                        {
                            TreeView1.Nodes.Remove(TreeView1.SelectedNode);
                        }
                        else
                        {
                            TreeView1.SelectedNode.Parent.ChildNodes.RemoveAt(TreeView1.SelectedNode.Parent.ChildNodes.IndexOf(TreeView1.SelectedNode));
                        }
      

  6.   

    http://demos.devexpress.com/ASPxTreeListDemos/Editing/Modes.aspx不用写代码就行。
      

  7.   

    问题自己解决。
    代码留给后人分享:
    Private bodyUrl As String = ""
        '页面转向,页面变量能在页面内保留,类似ViewState
        Private tblClassInfo As New DataTable()
        '储存读入的数据 
        'Private classes As New Classes()    Private Sub Bind()
            Dim rootStr As String = "物品信息"
            Dim rootNode As New TreeNode(rootStr)
            rootNode.Value = "-1"
            'rootNode.Target = "bodyFrame"
            'rootNode.NavigateUrl = "body.aspx"
            PopulateTreeView(0, rootNode)
            Me.mytree.Nodes.Add(rootNode)
        End Sub    Private Sub PopulateTreeView(ByVal parentId As Integer, ByVal parentNode As TreeNode)
            Dim dv As DataView = wp_class.GetClass("parentId=" + parentId.ToString()).DefaultView
            For Each drv As DataRowView In dv
                Dim myNode As New TreeNode(drv("className").ToString())
                myNode.Expanded = False
                myNode.Value = drv("classId").ToString()
                'myNode.Target = "bodyFrame"
                'myNode.NavigateUrl = "body.aspx?classId=" + drv("classId").ToString()
                parentNode.ChildNodes.Add(myNode)
                PopulateTreeView(Convert.ToInt32(drv("classId").ToString()), myNode)
            Next
        End Sub    ' <summary>
        ' 取得页面跳转地址
        ' </summary>
        ' <returns></returns>
        Public Function GetBodyUrl() As String
            Return bodyUrl
        End Function
        ' <summary>
        ' 增加同级
        ' </summary>
        ' <param name="sender"></param>
        ' <param name="e"></param>    Protected Sub cmd_tj_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmd_tj.Click
            If mytree.SelectedNode IsNot Nothing Then
                lblTitle.Text = "增加同级项"
                tree_sj = 1
                cmd_save.Enabled = True
                txtName.Focus()
            Else
                Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('请选择类别!');;", True)
            End If    End Sub
        ' <summary>
        ' 增加子级
        ' </summary>
        ' <param name="sender"></param>
        ' <param name="e"></param>
        Protected Sub cmd_next_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmd_next.Click
            If mytree.SelectedNode IsNot Nothing Then
                lblTitle.Text = "增加子级项"
                tree_sj = 2
                cmd_save.Enabled = True
                txtName.Focus()
            Else
                Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('请选择类别!');;", True)
            End If
        End Sub
        '编辑
        Protected Sub cmd_edit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmd_edit.Click
            If mytree.SelectedValue IsNot Nothing Then
                tree_sj = 3
                Dim dt As DataTable = wp_class.GetByClassId(Convert.ToInt32((mytree.SelectedValue).ToString()))
                lblTitle.Text = "编辑"
                txtName.Text = dt.Rows(0)("className").ToString()
                txtdescr.Text = dt.Rows(0)("classDescrip").ToString()
                cmd_save.Enabled = True
                txtName.Focus()
                'btAdd.Text = "修改"
            End If
        End Sub
        ' <summary>
        ' 删除
        ' </summary>
        ' <param name="sender"></param>
        ' <param name="e"></param>
        Protected Sub cmd_delete_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmd_delete.Click
            If mytree.SelectedNode IsNot Nothing Then
                If mytree.SelectedNode.Value = "-1" Then
                    Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('根结点不能删除');", True)
                    Return
                End If
                If Not wp_class.HasChild(Convert.ToInt32(mytree.SelectedValue)) Then
                    '先把同级重新排序
                    Dim dt As DataTable = wp_class.GetByClassId(Convert.ToInt32(mytree.SelectedValue))
                    wp_class.UpdateSort(Convert.ToInt32(dt.Rows(0)("sortId").ToString()), Convert.ToInt32(dt.Rows(0)("parentId").ToString()))
                    wp_class.UpdateChildNum(Convert.ToInt32(dt.Rows(0)("parentId").ToString()), False)
                    '再删除
                    wp_class.DeleteClass(Convert.ToInt32(mytree.SelectedValue))
                    Response.Redirect("tree.aspx")
                Else
                    Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('请先删除子级!');;", True)
                End If
            Else
                Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('请选择类别!');;", True)
            End If
        End Sub    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not Page.IsPostBack Then
                Bind()
                cmd_delete.Enabled = False
                cmd_edit.Enabled = False
                cmd_save.Enabled = False
                cmd_tj.Enabled = False
                cmd_delete.Attributes.Add("onclick", userdelete)
                cmd_up.Visible = False
                cmd_down.Visible = False
            End If
        End Sub    Protected Sub mytree_SelectedNodeChanged(ByVal sender As Object, ByVal e As EventArgs) Handles mytree.SelectedNodeChanged
            If mytree.SelectedValue = "-1" Then
                cmd_delete.Enabled = False
                cmd_edit.Enabled = False
                cmd_save.Enabled = False
                cmd_tj.Enabled = False
            Else
                cmd_tj.Enabled = True
                cmd_delete.Enabled = True
                cmd_edit.Enabled = True
                cmd_next.Enabled = True
            End If
            lblTitle.Text = mytree.SelectedNode.Text
        End Sub    '*****************************************************************    'Private Sub add_Bind()
        '    If Request.QueryString("type") IsNot Nothing Then
        '        MsgBox("增加同级")
        '        '说明是增加操作
        '        If Request.QueryString("type") = "add" Then
        '            lblTitle.Text = "增加同级项"
        '        Else
        '            lblTitle.Text = "增加子级项"
        '        End If
        '    Else
        '        MsgBox("编辑")    '        If mytree.SelectedValue IsNot Nothing Then
        '            MsgBox("修改")
        '            Dim dt As DataTable = wp_class.GetByClassId(Convert.ToInt32((mytree.SelectedValue).ToString()))
        '            lblTitle.Text = "编辑"
        '            txtName.Text = dt.Rows(0)("className").ToString()
        '            txtdescr.Text = dt.Rows(0)("classDescrip").ToString()
        '            'btAdd.Text = "修改"
        '        End If
        '    End If
        'End Sub
        'Protected Sub btAdd_Click(ByVal sender As Object, ByVal e As EventArgs)
        '    Try
        '        Add()
        '    Catch ex As Exception
        '        Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('" + ex.ToString() & "');", True)
        '    End Try
        'End Sub
        Private Sub Add()
            If mytree.SelectedValue IsNot Nothing Then
                If tree_sj = 1 Then
                    '增加同级
                    Dim dt As DataTable = wp_class.GetParent(Convert.ToInt32((mytree.SelectedValue).ToString()))
                    If dt.Rows.Count > 0 Then
                        '如果不是顶级tr
                        '父级
                        '最大排序号
                        wp_class.AddClass(txtName.Text.Trim(), txtdescr.Text, Convert.ToInt32(dt.Rows(0)("classId").ToString()), Convert.ToInt32(dt.Rows(0)("childNum").ToString()), Convert.ToInt32(dt.Rows(0)("depth").ToString()) + 1)
                    Else
                        '增加顶级
                        Dim maxId As String = wp_class.GetMaxSortId(0)
                        If maxId = "-1" Then
                            maxId = "0"
                        End If
                        wp_class.AddClass(txtName.Text.Trim(), txtdescr.Text, 0, Convert.ToInt32(maxId) + 1, 0)
                    End If
                ElseIf tree_sj = 2 Then
                    '增加子级
                    If mytree.SelectedValue <> "-1" Then
                        Dim dt As DataTable = wp_class.GetByClassId(Convert.ToInt32((mytree.SelectedValue).ToString()))
                        If dt.Rows.Count > 0 Then
                            '父级
                            '最大排序号,是父级孩子数量
                            wp_class.AddClass(txtName.Text.Trim(), txtdescr.Text, Convert.ToInt32(dt.Rows(0)("classId").ToString()), Convert.ToInt32(dt.Rows(0)("childNum").ToString()), Convert.ToInt32(dt.Rows(0)("depth").ToString()) + 1)
                            wp_class.UpdateChildNum(Convert.ToInt32((mytree.SelectedValue).ToString()), True)
                        End If
                    Else
                        '增加第一个结点,或者增加最顶级结点。
                        '找到顶级最大排序号,加一。
                        wp_class.AddClass(txtName.Text.Trim(), txtdescr.Text, 0, 1, 0)
                    End If
                End If
            ElseIf tree_sj = 3 Then
                If mytree.SelectedValue IsNot Nothing Then
                    '修改
                    wp_class.UpdateClass(txtName.Text.Trim(), txtdescr.Text, Convert.ToInt32((mytree.SelectedValue).ToString()))
                End If
            End If
            '刷新类别树
            mytree.Nodes.Clear()
            'Response.Redirect("tree.aspx")
            Call Bind()
            'ltlJs.Text = "window.parent.location.reload();"
            '.leftFrame
        End Sub    Protected Sub cmd_save_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmd_save.Click
            Try
                Add()
            Catch ex As Exception
                Page.ClientScript.RegisterStartupScript(Me.[GetType](), "show", "alert('" + ex.ToString() & "');", True)
            End Try
        End Sub