Foxtable(狐表)用户栏目专家坐堂 → 关于目录树节点顺序调整


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

主题:关于目录树节点顺序调整

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


加好友 发短信
等级:一尾狐 帖子:461 积分:4283 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2021/9/1 16:31:00 [只看该作者]

图片点击可在新窗口打开查看

上移代码:
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode = tr.SelectedNode
If nd IsNot Nothing Then
    nd.MoveUp()
End If
tr.Select

关闭代码:
Dim tr As WinForm.TreeView = Forms("主窗口").Controls("TreeView1")
Dim fn As String = ProjectPath & "Product.foxtr"
tr.Save(fn)
''tr = Forms("主窗口").Controls("TreeView1")
tr.BuildTree("目录表", "一级目录|二级目录|三级目录|四级目录|五级目录")
e.Form.Close

蓝总:节点上移 保存不了,重新打开还是老样子

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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/1 16:44:00 [只看该作者]

目录树是根据表格生成的,生成后,目录树的节点移动和表格是没有任何关系的。表格还是原来的数据,重新生成目录树当然也是原来的样子。

要去同时改表格的数据才行的,表格的行也要对应的上下移动,然后根据排序列生成目录树:tr.BuildTree("目录表", "一级目录|二级目录|三级目录|四级目录|五级目录",“”,"_sortkey")


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


加好友 发短信
等级:一尾狐 帖子:461 积分:4283 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2021/9/1 17:59:00 [只看该作者]

搞起来太复杂了。2、3级节点好搞,但是1级节点包含234级节点,整个节点移动就麻烦了,

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


加好友 发短信
等级:九尾狐 帖子:2221 积分:18261 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2021/9/1 18:24:00 [只看该作者]

如果目录层级这么深,还不如将这个树的原数据用表来构建。
这样,就直接通过代码去修改移动行的_SortKey就快多了,这样,不需要动这个节点的子节点的SortKey


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


加好友 发短信
等级:九尾狐 帖子:2221 积分:18261 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2021/9/3 11:54:00 [只看该作者]

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&replyID=117206&ID=160494&skin=1

这个可以参考一下。
区域的顶行和底行可以判断的

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


加好友 发短信
等级:九尾狐 帖子:2221 积分:18261 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2021/9/9 17:12:00 [只看该作者]

如果树节点不多的话,直接给它们全部重新排序就好了。如果数据行上万,就不太适合

----如果要在窗口中新增加节点的话,只下面的代码就不行了。所以,如果新增行,最好是在表中增加。或者增加节点的时候,同步在表中增加。

Dim trv1 As WinForm.TreeView = Forms("CS").Controls("TreeView1")
Dim dic As new Dictionary(of DataRow,Double)

For i As Integer = 0 To trv1.AllNodes.Count - 1
    Dim nd As WinForm.TreeNode = trv1.AllNodes(i)
    Dim ndr As DataRow = nd.DataRow
    If ndr IsNot Nothing Then
        dic.add(ndr,i)
    End If
Next

For Each dr As DataRow In dic.Keys`
    dr.BaseRow("_SortKey") = i
Next

[此贴子已经被作者于2021/9/9 17:14:46编辑过]

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


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/9/10 9:37:00 [只看该作者]

下载最新的用层级处理,要不就增加节点编号,移动后改变节点编号,就不用上移下移行。

比如三级没用分类、分组、序号来区分,同一类,分类编号一样,同一组分组编号一样,序号就按照正常的序号排列

 


 回到顶部
总数 17 上一页 1 2