Foxtable(狐表)用户栏目专家坐堂 → TreeView1与表中不同步


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

主题:TreeView1与表中不同步

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


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

同级别节点上下交换顺序,仍然是同一个父节点,不还是同一个父键吗?

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


加好友 发短信
等级:狐精 帖子:3150 积分:20981 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/25 14:46:00 [只看该作者]

这样的效果:

 


图片点击可在新窗口打开查看此主题相关图片如下:上移前.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:上移后.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:狐精 帖子:3150 积分:20981 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/25 14:50:00 [只看该作者]

现在只是在做Case 0时的上移,等于1/2时还没思路。

 

Select Case sd.level
    Case 0

 

Case 0时,上下移动节点后,表中分类的父键的顺序 需要和 treeview中的节点顺序一样。

[此贴子已经被作者于2019/9/25 14:52:18编辑过]

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


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/25 15:07:00 [只看该作者]

试试

Dim dt As DataTable=DataTables(vars("editTable"))
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim sd As WinForm.TreeNode=tr.SelectedNode '当前选择的项
If sd.Index > 0 Then
    Dim sd2 As WinForm.TreeNode = tr.Nodes(sd.Index - 1)
    Dim dr1 As DataRow = dt.Find("分类='" & sd.text & "'")
    Dim dr2 As DataRow = dt.Find("分类='" & sd2.text & "'")
    If dr1 IsNot Nothing AndAlso dr2 IsNot Nothing Then
        Dim d1 As Integer = dr1("父键")
        Dim d2 As Integer = dr2("父键")
        dt.ReplaceFor("父键",99999,"父键=" & d2)
        dt.ReplaceFor("父键",d2,"父键=" & d1)
        dt.ReplaceFor("父键",d1,"父键=99999")
        sd.MoveUp
    End If
End If

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


加好友 发短信
等级:狐精 帖子:3150 积分:20981 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/25 15:22:00 [只看该作者]

老师,这样可以了,如果我需要移动分组(第二级节点)时(只上下移动,不跨级移动),父键节点不变,分组节点的顺序改变,表中是不是还需要用一列来排序分组的顺序呢?
[此贴子已经被作者于2019/9/25 15:27:26编辑过]

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


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/25 15:26:00 [只看该作者]

是的。不是有一个序号列了吗

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


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

但是每一个分组对应的序号列序号是不一样啊,怎么解决?
[此贴子已经被作者于2019/9/25 15:28:30编辑过]

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


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/25 15:46:00 [只看该作者]

那就要增加辅助列了

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


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

老师,我增加了子键列,在增加子项时,怎么判断当前父键有没子节点呢?这个思路还是有点没理清楚。

     Case 0
        Dim r As DataRow=dt.AddNew
        r("序号")=dt.sqlCompute("Max(序号)")+1
        r("父键") = r0("父键")
        r("子键") = r0("子键")
        r("分类")=  r0("分类")
        r("分类图标") =  r0("分类图标")
        r("分组")= grp & r("序号")
        sd.nodes.Add(r("分组"))
        Dim s As String=r("分组")
        tr.SelectedNode =sd.Nodes(s)
        sd.Expand
        tr.Select
        r.save


图片点击可在新窗口打开查看此主题相关图片如下:111111.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/9/26 10:25:16编辑过]

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


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/26 9:32:00 [只看该作者]

某节点.Nodes.count = 0就是没有子节点

 回到顶部
总数 46 上一页 1 2 3 4 5 下一页