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


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

主题:TreeView1与表中不同步

帅哥,在线噢!
cd_tdh
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
TreeView1与表中不同步  发帖心情 Post By:2019/9/24 14:57:00 [显示全部帖子]

老师,麻烦看看,窗口:导航维护,增加项、增加子项时,TreeView1的节点怎么让它和导航表同步。

 


以下内容是专门发给有点蓝浏览


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


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/24 16:05:00 [显示全部帖子]

老师,增加项后,修改了分类名称,TreeView1增加的节点名称没有修改。增加子项后,新增加的子项也不是当前节点,与导航表中的行也没对应上。

增加项修改为这样:

Dim dt As DataTable=DataTables(vars("editTable"))
Dim r0 As Row =Tables(vars("editTable")).Current
Dim r As DataRow=dt.AddNew
r("序号")=dt.sqlCompute("Max(序号)")+1
'目录树
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim sd As WinForm.TreeNode=tr.SelectedNode '当前选择的项
Dim typ As String = "新分类" '分类
r("父键")=dt.sqlCompute("Max(父键)")+1
r("分类")= typ & r("序号")
Dim n = tr.Nodes.add(r("分类"))
Dim s As String=r("分类")
tr.SelectedNode =tr.Nodes(s)
sd.Expand
r.Save

修改了分类名称,TreeView1增加的节点名称修改过来了,但是点击其他节点在点击这个新增加节点,节点与新增加的行又对应不上了,麻烦看看TreeView1中AfterSelectNode事件代码哪儿不对呢。

[此贴子已经被作者于2019/9/24 16:17:46编辑过]

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


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/24 16:44:00 [显示全部帖子]

老师,修改了还是与新增项一样,节点修改后,我点其他节点后再点刚修改的节点,还是没定位到导航表对应的行。

老师,这样修改对了:

        Dim r As Integer
        r = Tables(vars("editTable")).FindRow("[分类] Like '" & e.Node.text & "'") '从第一行开始查找
        If r >= 0 Then '如果找到的话
            Tables(vars("editTable")).Position = r '定位到找到的行.
        End If

[此贴子已经被作者于2019/9/24 17:18:56编辑过]

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


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/25 14:05:00 [显示全部帖子]

老师,麻烦看看上移按钮,我集合有点弄得混乱了,我上移项目管理后,导航表中没有把所有项目管理的父键变为 2 ,

 


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

 

代码如下:

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 Is Nothing Then Return
Dim i As Integer= sd.Index
Select Case sd.level
    Case 0
        If i>0 Then
            Dim r As  List(of  DataRow)= dt.Select("分类='" & sd.text & "'")
            If r Is Nothing Then Return
            For Each dr2  As DataRow In r
                Dim sd1 As WinForm.TreeNode=tr.Nodes(i-1)
                Dim r1 As List(of DataRow)= dt.Select("分类='" & sd1.text & "'")
                For Each dr1  As DataRow In r1
                    Dim s As Integer = dr1("父键")
                    dr1("父键")=dr2("父键")
                    dr2("父键")=s
                Next
            Next
        End If
        sd.MoveUp
        tr.Select
End Select


 回到顶部
帅哥,在线噢!
cd_tdh
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/25 14:25:00 [显示全部帖子]

以下是引用有点蓝在2019/9/25 14:16:00的发言:
什么地方上移?按什么逻辑上移?

通过导航维护窗口,上移按钮,移动节点,导航表中对应分类父键相应改变。


 回到顶部
帅哥,在线噢!
cd_tdh
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/25 14:42:00 [显示全部帖子]

以下是引用有点蓝在2019/9/25 14:28:00的发言:
是同级别的节点上下交换顺序,还是把子节点移到父节点下面作为兄弟节点

同级别节点上下交换顺序


 回到顶部
帅哥,在线噢!
cd_tdh
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/25 14:46:00 [显示全部帖子]

这样的效果:

 


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

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

 回到顶部
帅哥,在线噢!
cd_tdh
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望: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编辑过]

 回到顶部
帅哥,在线噢!
cd_tdh
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/25 15:22:00 [显示全部帖子]

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

 回到顶部
帅哥,在线噢!
cd_tdh
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/25 15:28:00 [显示全部帖子]

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

 回到顶部
总数 25 1 2 3 下一页