Foxtable(狐表)用户栏目专家坐堂 → 五级目录树的建立


  共有4358人关注过本帖树形打印复制链接

主题:五级目录树的建立

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110766 积分:563762 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/30 8:41:00 [显示全部帖子]

2楼这种用法不适合改为一条数据。
还是以“编辑目录树之二”为例,比如再多一级:

2、窗口的AfterLoad事件代码为:

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
tr.BuildTree(
"表A""大类|二类|三类|四类"
)


5、“增加子节点”按钮的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
        
Dim dr As DataRow = DataTables("表A").AddNew
        If
 nd.Level = 0 
Then
            dr(
"大类") = nd.Text
            dr(
"二类") = "新节点"
        
ElseIf nd.Level = 1
            dr(
"大类") = nd.ParentNode.Text
            dr(
"二类") = nd.text
            dr(
"三类") = "新节点"

        ElseIf nd.Level = 2
            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


6、“删除”按钮的Click事件代码:

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim
 nd As WinForm.TreeNode = tr.SelectedNode
If
 nd IsNot Nothing Then
    Dim
 pth() As String = nd.FullPath.Split("\")
    Select
 Case nd.Level
    Case
 0
        
DataTables("
A").DeleteFor("大类 = '" & pth(0) & "'")
    Case
 1
        
DataTables("
A").DeleteFor("大类 = '" & pth(0) & "' And 二类 = '" & pth(1) & "'")
    Case
 2
        
DataTables("
A").DeleteFor("大类 = '" & pth(0) & "' And 二类 = '" & pth(1) & "' And 三类 = '" & pth(2) & "'")

    Case 3
        
DataTables("
A").DeleteFor("大类 = '" & pth(0) & "' And 二类 = '" & pth(1) & "' And 三类 = '" & pth(2) & "' And 四 = '" & pth(3) & "'")

    End Select
    nd.Delete()
End
 If
tr.Select()


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110766 积分:563762 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/30 9:38:00 [显示全部帖子]


 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110766 积分:563762 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/30 15:31:00 [显示全部帖子]

判断一下有没有值
Dim tr As Row = Tables("department").Current
if tr is  nothing then return
Dim dr As DataRow = e.Node.DataRow '获取生成此节点的DataRow
if dr isnot nothing then
        tr("parent") = dr("departname")
        tr("parentID") = dr("departID")
        e.Form.DropDownBox.Value = tr("departname") '这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据.
        e.Form.DropDownBox.CloseDropdown()
end if

[此贴子已经被作者于2020/5/30 16:01:37编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110766 积分:563762 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/30 16:08:00 [显示全部帖子]

通过递归动态生成的节点是没有e.Node.DataRow属性的


Dim tr As Row = Tables("department").Current
If tr Is Nothing Then Return
tr("parentID") = e.Node.Name
e.Form.DropDownBox.Value = e.Node.Text '这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据.
e.Form.DropDownBox.CloseDropdown()

 回到顶部