Foxtable(狐表)用户栏目专家坐堂 → [求助]树表操作


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

主题:[求助]树表操作

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


加好友 发短信
等级:小狐 帖子:341 积分:3422 威望:0 精华:0 注册:2014/8/20 20:14:00
[求助]树表操作  发帖心情 Post By:2014/10/25 18:18:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:树表操作.jpg
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:5实验模块目录树表(可用) 5 - 副本.table

 

在左边目录树操作增加、减少、上移、下移、等操作右边的表的编码及数据也跟着变化如何写代码

[此贴子已经被作者于2014-10-25 18:18:43编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/26 9:54:00 [只看该作者]

 不要做实时的变化,你弄一个保存按钮,最后生成一下就好。

 

 参考代码

 

Dim dt As DataTable = DataTables("表A")
dt.DataRows.Clear
Dim dic As New Dictionary(of Integer, Integer)
Dim prevLevel As Integer = 0
For Each nd As WinForm.TreeNode In e.Form.Controls("TreeView1").AllNodes
    If nd.Level = 0 AndAlso dic.count > 0 Then
        Dim temp = dic(0)
        dic.Clear
        dic.Add(0, temp)
    End If
   
    If dic.ContainsKey(nd.Level) = False Then
        dic.Add(nd.Level, 1)
    Else
        dic(nd.Level) = dic(nd.Level) + 1
    End If
    For i As Integer = nd.level + 1 To prevLevel
        dic(i) = 0
    Next
   
    prevLevel = nd.Level
    Dim ndr As DataRow = dt.AddNew
    Dim str As String = ""
    For i As Integer = 0 To nd.Level
        str &= dic(i) & "."
    Next
    ndr("第一列") = str.TrimEnd(".")
    ndr("第二列") = nd.Text
Next


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


加好友 发短信
等级:小狐 帖子:341 积分:3422 威望:0 精华:0 注册:2014/8/20 20:14:00
  发帖心情 Post By:2014/10/26 11:18:00 [只看该作者]

以下是引用有点甜在2014-10-26 9:54:00的发言:

 不要做实时的变化,你弄一个保存按钮,最后生成一下就好。

 

 参考代码

 

Dim dt As DataTable = DataTables("表A")
dt.DataRows.Clear
Dim dic As New Dictionary(of Integer, Integer)
Dim prevLevel As Integer = 0
For Each nd As WinForm.TreeNode In e.Form.Controls("TreeView1").AllNodes
    If nd.Level = 0 AndAlso dic.count > 0 Then
        Dim temp = dic(0)
        dic.Clear
        dic.Add(0, temp)
    End If
   
    If dic.ContainsKey(nd.Level) = False Then
        dic.Add(nd.Level, 1)
    Else
        dic(nd.Level) = dic(nd.Level) + 1
    End If
    For i As Integer = nd.level + 1 To prevLevel
        dic(i) = 0
    Next
   
    prevLevel = nd.Level
    Dim ndr As DataRow = dt.AddNew
    Dim str As String = ""
    For i As Integer = 0 To nd.Level
        str &= dic(i) & "."
    Next
    ndr("第一列") = str.TrimEnd(".")
    ndr("第二列") = nd.Text
Next

我经常在树添加数据啊,要时时变化,要怎么做

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/26 11:31:00 [只看该作者]

 移动以后,点保存重新生成。
[此贴子已经被作者于2014-10-26 11:31:32编辑过]

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


加好友 发短信
等级:小狐 帖子:341 积分:3422 威望:0 精华:0 注册:2014/8/20 20:14:00
  发帖心情 Post By:2014/10/26 12:25:00 [只看该作者]

‘添加节点代码,我这样写代码,项目工程没有问题,但后面的节点都有问题了,要怎么改,红色字体处有问题
Index + = 1
Dim tv As WinForm.TreeView = e.Form.Controls("TreeView1")
If tv.SelectedNode IsNot Nothing Then
    Dim nd As WinForm.TreeNode = tv.SelectedNode.Nodes.Add(Index,"新节点")
      tv.SelectedNode = nd
    tv.Select   
    Dim dr As Row=Tables("主窗口_总表").AddNew()    '
    Dim dr0 As  String=dr("编号")    
    Dim bh As Integer =tv.SelectedNode.ParentNode.Name '当前节点父编码
    If dr0.StartsWith(bh) =False '如果单据编号前缀不符
        Dim max As String
        Dim x As Integer=len(bh)+3
        Dim idx As Integer         
        max = Tables("主窗口_总表").Compute("Max(编号)","len(编号) = " & (len(bh)+3))          
        If max <>""Then '如果存在最大编号           
            idx = CInt(max.Substring(x,3)) + 1
         Else
             idx = 1 '否则顺序号等于1
         End If
    End If
    dr("编号") = bh & Format(idx,"000")
    dr("名称")= tv.SelectedNode.text
End If
DataTables("总表").Save

 

 

 

[此贴子已经被作者于2014-10-26 12:29:30编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/26 14:25:00 [只看该作者]

 

Dim tv As WinForm.TreeView = e.Form.Controls("TreeView1")
If tv.SelectedNode IsNot Nothing Then
   
    Dim dr As Row=Tables("主窗口_总表").AddNew()    '
    Dim bh As String = tv.SelectedNode.Name
   
    Dim max As String
    Dim idx As Integer
    max = Tables("主窗口_总表").Compute("Max(编号)","编号 like '" & bh & "%' and len(编号) = " & len(bh) + 3)

    If max <> "" Then '如果存在最大编号
        idx = CInt(max.Substring(bh.length,3)) + 1
    Else
        idx = 1 '否则顺序号等于1
    End If
   
    dr("编号") = bh & Format(idx,"000")
    dr("名称")= tv.SelectedNode.text
    Dim nd As WinForm.TreeNode = tv.SelectedNode.Nodes.Add(dr("编号"),"新节点")
End If
DataTables("总表").Save


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


加好友 发短信
等级:小狐 帖子:341 积分:3422 威望:0 精华:0 注册:2014/8/20 20:14:00
  发帖心情 Post By:2014/10/26 15:48:00 [只看该作者]

Index + = 1
Dim idx As Integer
Dim tv As WinForm.TreeView = e.Form.Controls("TreeView1")
If tv.SelectedNode IsNot Nothing Then
    Dim nd As WinForm.TreeNode = tv.SelectedNode.Nodes.Add(Index,"新节点")
    tv.SelectedNode = nd
    'tv.Select
    'tv.BeginEdit
    Dim dr As Row=Tables("主窗口_总表").AddNew()    '
    Dim dr0 As  String=dr("编号")
    'msgbox(e.node.level &"级:编码"& e.node.name & "显示名称:"& e.node.text) '***显示节点显示名称
    Dim bh As String =tv.SelectedNode.ParentNode.Name '当前节点父编码
    If dr0.StartsWith(bh) =False '如果单据编号前缀不符
        Dim max As String       
        Dim x As Integer=len(bh)+3
        dr("数量")= bh '测试用
        dr("备注")=x '测试用
        max = Tables("主窗口_总表").Compute("Max(编号)","len(编号) = " & x)
        dr("名称")=max
        If max <>""Then '如果存在最大编号       
         idx = CInt(max.Substring(x-3,3)) + 1'获得最大编号的后三位顺序号,并加1           
        Else           
            idx = 1 '否则顺序号等于1
        End If
    End If
    dr("编号") = bh & Format(idx,"000")
    dr("类别")= tv.SelectedNode.text '测试用
End If
DataTables("总表").Save

‘现在这样可以正常使用了,不过我点击新增的节点没有筛选出来,只有重新加载窗体才行,要怎么处理

 

[此贴子已经被作者于2014-10-26 15:47:57编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/26 15:51:00 [只看该作者]

你说的没有筛选出来是什么意思?什么筛选。

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


加好友 发短信
等级:小狐 帖子:341 积分:3422 威望:0 精华:0 注册:2014/8/20 20:14:00
  发帖心情 Post By:2014/10/26 16:07:00 [只看该作者]

谢谢甜,你的代码可以实现了

 


 回到顶部