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


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

主题:TreeView1与表中不同步

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


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

增加项

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 = "新分类" '分类
Dim grp As String = "新分组" '分组
Dim name As String = "新名称" '名称
r("父键")=dt.sqlCompute("Max(父键)")+1
r("分类")= typ & r("序号")
Dim n = tr.Nodes.add(r("分类"))
Dim s As String=r0("分类")
tr.SelectedNode =tr.Nodes(s)
sd.Expand
r.Save

增加子项
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim sd As WinForm.TreeNode =tr.SelectedNode '当前选择的项
If sd Is Nothing Then Return
Dim dt As DataTable=DataTables(vars("editTable"))
Dim r0 As Row =Tables(vars("editTable")).Current
Dim typ As String ="新分类"  '分类
Dim grp As String ="新分组" '分组
Dim name As String ="新名称" '名称

Select Case sd.level
    Case 2
        MessageBox.Show("这是最小节点,不能添加子项","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
        Return
    Case 0
        Dim r As DataRow=dt.AddNew
        r("序号")=dt.sqlCompute("Max(序号)")+1
        r("父键") = r0("父键")
        r("分类")=  r0("分类")
        r("分类图标") =  r0("分类图标")
        r("分组")= grp & r("序号")
        sd.nodes.Add(r("分类"),r("分组"),r("分类图标"))
        Dim s As String=r("标题")
        tr.SelectedNode =sd.Nodes(s)
        sd.Expand
        tr.Select
        r.save
    Case 1
        Dim r1 As DataRow=dt.AddNew
        r1("序号")=dt.sqlCompute("Max(序号)")+1
        r1("父键") = r0("父键")
        r1("分类")=  r0("分类")
        r1("分类图标")=  r0("分类图标")
        r1("分组")=  r0("分组")
        r1("名称")=  name & r1("序号")
        sd.nodes.add(r1("分类") & r1("分组"),r1("名称"),r1("分类图标"))
        Dim s As String=r1("标题")
        tr.SelectedNode =sd.Nodes(s)
        sd.Expand
        tr.Select
        r1.save
End Select

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


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

2楼

Case 0
sd.nodes.Add(r("分类"),r("分组"),r("分类图标"))
改为
sd.nodes.Add(r("分组"))

Case 1

 sd.nodes.add(r1("分类") & r1("分组"),r1("名称"),r1("分类图标"))
改为
 sd.nodes.add(r1("名称"))



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


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/25 14:16:00 [显示全部帖子]

什么地方上移?按什么逻辑上移?

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


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/25 14:28:00 [显示全部帖子]

是同级别的节点上下交换顺序,还是把子节点移到父节点下面作为兄弟节点

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


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/25 14:44:00 [显示全部帖子]

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

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


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望: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

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


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/25 15:26:00 [显示全部帖子]

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

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


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/25 15:46:00 [显示全部帖子]

那就要增加辅助列了

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


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/26 9:32:00 [显示全部帖子]

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

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


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/26 11:16:00 [显示全部帖子]

Dim sd4 As WinForm.TreeNode = sd.ParentNode.Nodes(sd.Index - 1)

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