Foxtable(狐表)用户栏目专家坐堂 → 增加子节点父键要保持和已有分组不变


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

主题:增加子节点父键要保持和已有分组不变

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/7 14:23:00 [显示全部帖子]

1、编辑目录树,请这样做

 

下载信息  [文件大小:324.0 KB  下载次数:36]
图片点击可在新窗口打开查看点击浏览该文件:编辑目录树例子.table

 

2、改成

 

msgbox(sd.name)

r("父键")=dt.Compute("Max(父键)","父键=" & sd.name)


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/7 15:09:00 [显示全部帖子]

以下是引用cd_tdh在2018/8/7 14:50:00的发言:

  老师,是父键的值没传递过来,sd.name是选择的节点,怎么去过去该节点对应的父键的值呢?

 

r("父键")=dt.Compute("Max(父键)","父键 ='" & sd.parentNode.name & "'")


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/7 16:23:00 [显示全部帖子]

Dim dt As DataTable=DataTables(vars("editTable"))
Dim r As DataRow=dt.AddNew
Dim mp As String="新节点"
'目录树
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim sd As WinForm.TreeNode=tr.SelectedNode '当前选择的项
Dim name As String '标题
Dim Typ As String '类型
If sd IsNot Nothing Then
    If sd.Level=0 Then
        typ="新节点"
        name="分组"
    Else
        typ="新节点"
        name="名称"
    End If
Else
    name="名称"
End If
If sd Is Nothing  Then
    r("父键")=dt.Compute("Max(父键)")+1
    r("分组")="新节点"
    r("名称")="名称"
    tr.Nodes.add(r("分组"),mp)
    Dim s As String=r("名称")
    tr.SelectedNode =tr.Nodes(s)
    Return
End If
If sd.Level=0 Then
    r("父键")=dt.Compute("Max(父键)")+1
    r("分组")="新节点"
    r("名称")=""
    tr.Nodes.add(r("分组"),mp)
    Dim s As String=r("名称")
    tr.SelectedNode =tr.Nodes(s)
Else
    r("父键")=dt.Compute("Max(父键)","分组 ='" & tr.SelectedNode.ParentNode.name & "'")+1
    r("分组")= "新节点"
    r("名称")=""
    Dim mynd = tr.SelectedNode.ParentNode.Nodes.add(r("分组"),mp)
    tr.SelectedNode=mynd
End If
tr.Select

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/7 16:36:00 [显示全部帖子]

以下是引用cd_tdh在2018/8/7 16:27:00的发言:

老师,是增加子项不对。

 

类似参考

 

    r("父键")=dt.Compute("Max(父键)","分组 ='" & tr.SelectedNode.ParentNode.name & "'")+1
    r("分组")= "新节点"
    r("名称")=""
    Dim mynd = tr.SelectedNode.ParentNode.Nodes.add(r("分组"),mp)
    tr.SelectedNode=mynd


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/7 17:26:00 [显示全部帖子]

    Dim r As DataRow=dt.AddNew
    If sd.Level=0 Then
        name="分组"
        typ="新节点"
        r("父键")=dt.Compute("Max(父键)","分组 ='" & sd.name & "'")
        r("分组")=sd.name
        r("名称")=typ
    End If
    dim mynd = sd.Nodes.add(r("分组"),mp)
    sd.Expand
    tr.SelectedNode = mynd
    tr.Select

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/8 10:23:00 [显示全部帖子]

改成
 
    Dim r As DataRow=dt.AddNew
    If sd.Level=0 Then
        name="分组"
        typ="新节点"
        r("父键")=dt.Compute("Max(父键)","分组 ='" & sd.name & "'")
        r("分组")=sd.name
        r("名称")=typ
    End If
    dim mynd = sd.Nodes.add(r("名称"),mp)
    sd.Expand
    tr.SelectedNode = mynd
    tr.Select

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/8 11:15:00 [显示全部帖子]

以下是引用cd_tdh在2018/8/8 11:05:00的发言:
老师,还有个问题,有通过右边记录窗口更改分组名或是新的节点名称,目录树怎么同时更新呢?

 

方法一:重新buildtree。

 

方法二:一般不是选的节点后,右边才显示?修改右边(datacolchanged)事件,把选定的节点的text修改一下即可。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/8 11:49:00 [显示全部帖子]

哎,你好好弹出值看一下吧

 

For Each sd As  WinForm.TreeNode In tr.AllNodes

    msgbox(sd.name & "   " & sd.fullName)

Next


 回到顶部