以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  目录树目录创建问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=160800)

--  作者:lisangyu
--  发布时间:2021/2/22 16:38:00
--  目录树目录创建问题

“增加子节点”按钮的Click事件代码:

Dim tr As WinForm.TreeView
Dim nd As WinForm.TreeNode
tr = e.Form.Controls("TreeView1")
nd = tr.SelectedNode
If nd IsNot Nothing Then
    If nd.Level = 3 Then
        MessageBox.Show("最多允许四层节点!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Else
        
        If nd.Level = 0 And User.IsRole("系统管理员") Then
            Dim dr As DataRow = DataTables("目录表").AddNew
            dr("一级目录") = nd.Text
            dr("二级目录") = "新节点"
        ElseIf nd.Level = 1 And nd.text = " & user.group & " Or User.IsRole("系统管理员") Then
            Dim dr As DataRow = DataTables("目录表").AddNew
            dr("一级目录") = nd.ParentNode.Text
            dr("二级目录") = nd.text
            dr("三级目录") = "新节点"
        ElseIf nd.Level = 2 And nd.ParentNode.text = " & user.group & " Or User.IsRole("系统管理员") Then
            Dim dr As DataRow = DataTables("目录表").AddNew
            dr("一级目录") = nd.ParentNode.ParentNode.Text
            dr("二级目录") = nd.ParentNode.Text
            dr("三级目录") = nd.text
            dr("四级目录") = "新节点"
            
        End If
        nd = nd.Nodes.Add("新节点")
        tr.SelectedNode = nd
        tr.Select()
        tr.BeginEdit()
    End If
End If

蓝总:上面是创建子节点的代码,主要是用于创建四级目录,本来中午已经调试好了,现在出问题了,前三级创建都没问题,就是在创建四级目录后,二、三四级节点变成一二三节点,无法创建第四级节点。

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20210222163750.jpg
图片点击可在新窗口打开查看





--  作者:有点蓝
--  发布时间:2021/2/22 16:40:00
--  
节点名称重复了,同一个路径不要使用同样的名称
--  作者:lisangyu
--  发布时间:2021/2/22 16:44:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:2222.jpg
图片点击可在新窗口打开查看
蓝总:还是不行,我用了不同的名字,一到第四个节点,就有问题

--  作者:有点蓝
--  发布时间:2021/2/22 16:49:00
--  
If nd.Level = 3 Then
        MessageBox.Show("最多允许四层节点!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Else
        
        If nd.Level = 0 And User.IsRole("系统管理员") Then
            Dim dr As DataRow = DataTables("目录表").AddNew
            dr("一级目录") = nd.Text
            dr("二级目录") = "新节点"
        ElseIf nd.Level = 1 And nd.text = " & user.group & " Or User.IsRole("系统管理员") Then
            Dim dr As DataRow = DataTables("目录表").AddNew
            dr("一级目录") = nd.ParentNode.Text
            dr("二级目录") = nd.text
            dr("三级目录") = "新节点"
        ElseIf nd.Level = 2 And (nd.ParentNode.text = " & user.group & " Or User.IsRole("系统管理员")) Then
            Dim dr As DataRow = DataTables("目录表").AddNew
            dr("一级目录") = nd.ParentNode.ParentNode.Text
            dr("二级目录") = nd.ParentNode.Text
            dr("三级目录") = nd.text
            dr("四级目录") = "新节点"
 else
return           
        End If
        nd = nd.Nodes.Add("新节点")
        tr.SelectedNode = nd
        tr.Select()
        tr.BeginEdit()
    End If

--  作者:lisangyu
--  发布时间:2021/2/22 16:54:00
--  
谢谢蓝总
--  作者:lisangyu
--  发布时间:2021/2/23 11:04:00
--  
Dim tr As WinForm.TreeView
Dim nd As WinForm.TreeNode
tr = e.Form.Controls("TreeView1")
nd = tr.SelectedNode
If nd IsNot Nothing Then
    If nd.Level = 3 Then
        MessageBox.Show("最多允许四层目录!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Else
        
            If nd.Level = 0 And User.IsRole("系统管理员") Then
                Dim dr As DataRow = DataTables("目录表").AddNew
                dr("一级目录") = nd.Text
                dr("二级目录") = "新目录"
            ElseIf nd.Level = 1 And (nd.text = User.Group Or User.IsRole("系统管理员")) Then
                Dim dr As DataRow = DataTables("目录表").AddNew
                dr("一级目录") = nd.ParentNode.Text
                dr("二级目录") = nd.text
                dr("三级目录") = "新目录"
            ElseIf nd.Level = 2 And (nd.ParentNode.text = User.Group Or User.IsRole("系统管理员")) Then
                Dim dr As DataRow = DataTables("目录表").AddNew
                dr("一级目录") = nd.ParentNode.ParentNode.Text
                dr("二级目录") = nd.ParentNode.Text
                dr("三级目录") = nd.text
                dr("四级目录") = "新目录"
            Else
                Return
            End If
            nd = nd.Nodes.Add("新目录")
            tr.SelectedNode = nd
            tr.Select()
            tr.BeginEdit()
        End If

End If
当非管理员创建二级目录时(创建部门),就报错弹出,
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20210223105931.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/2/23 11:44:00
--  
调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm,哪一句代码出错?
--  作者:lisangyu
--  发布时间:2021/2/23 14:41:00
--  
Dim tr As WinForm.TreeView
Dim nd As WinForm.TreeNode
tr = e.Form.Controls("TreeView1")
nd = tr.SelectedNode
If nd IsNot Nothing Then
    If nd.Level = 3 Then
        MessageBox.Show("最多允许四层目录!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Else
        MessageBox.Show(5)

            If nd.Level = 0 And User.IsRole("系统管理员") Then
MessageBox.Show(1)

                Dim dr As DataRow = DataTables("目录表").AddNew
MessageBox.Show(2)

                dr("一级目录") = nd.Text
MessageBox.Show(3)

                dr("二级目录") = "新目录"
MessageBox.Show(4)

            ElseIf nd.Level = 1 And (nd.text = User.Group Or User.IsRole("系统管理员")) Then
                Dim dr As DataRow = DataTables("目录表").AddNew
                dr("一级目录") = nd.ParentNode.Text
                dr("二级目录") = nd.text
                dr("三级目录") = "新目录"
            ElseIf nd.Level = 2 And (nd.ParentNode.text = User.Group Or User.IsRole("系统管理员")) Then
                Dim dr As DataRow = DataTables("目录表").AddNew
                dr("一级目录") = nd.ParentNode.ParentNode.Text
                dr("二级目录") = nd.ParentNode.Text
                dr("三级目录") = nd.text
                dr("四级目录") = "新目录"
            Else
                Return
            End If
MessageBox.Show(6)
            nd = nd.Nodes.Add("新目录")
MessageBox.Show(7)
            tr.SelectedNode = nd
            tr.Select()
            tr.BeginEdit()
MessageBox.Show(8)
        End If

End If

当非管理员创建二级目录时(创建部门时),弹出“5” ,代码就没走下去了,

--  作者:有点蓝
--  发布时间:2021/2/23 14:44:00
--  
这个代码不可能出错的。删除项目里的bin目录,然后重启项目试试

还不行请上传实例测试