Foxtable(狐表)用户栏目专家坐堂 → 合并列生成加载树无效


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

主题:合并列生成加载树无效

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
合并列生成加载树无效  发帖心情 Post By:2018/5/12 15:57:00 [只看该作者]

用了合并列”子目号+ '.' +子目名称 as 子目,支付编号+ '.' +细目名称 as 细目“生成加载树节点,显示目录树中的”子目“,”细目“列无效。请老师指导
窗口事件:
If User.Name = "开发者" Or User.Name = "管理员" Then
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.C
    cmd.CommandText = "SELEC T DISTINCT 项目名称,施工合同段,章节,子目号+ '.' +子目名称 as 子目,支付编号+ '.' +细目名称 as 细目 Fro m {工程量清单}"
    dt = cmd.ExecuteReader()
    Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
    trv.BuildTree(dt,"项目名称|施工合同段|章节|子目|细目")
    trv.Nodes.Insert("加载所有数据",0)
Else
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.C
    cmd.CommandText = "SELEC T DISTINCT 项目名称,施工合同段,章节,子目号+ '.' +子目名称 as 子目,支付编号+ '.' +细目名称 as 细目 Fro m {工程量清单} where 承包人机构 = '" & User.Name & "' or 监理机构 = '" & User.Name & "' or 业主机构 = '" & User.Name & "'"
    dt = cmd.ExecuteReader()
    
    Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
    trv.BuildTree(dt,"项目名称|施工合同段|章节|子目|细目")
    trv.Nodes.Insert("加载所有数据",0)
End If

vars("工程量清单filter") = DataTables("工程量清单").LoadFilter

目录加载树事件:
Dim Filter As String = "1=1"

Dim dr = e.node.FullPath.split("\") '获取生成此节点的行
If e.Node.Text <> "加载所有数据" Then
    Select Case e.Node.Level
        Case 0
            Filter = "[项目名称] = '" & dr(0) & "'"
        Case 1
            Filter = "[项目名称] = '" & dr(0) & "'And [施工合同段] = '" & dr(1) & "'"
        Case 2
            Filter = "[项目名称] = '" & dr(0) & "'And [施工合同段] = '" & dr(1) & "' And [章节] = '" & dr(2) & "'"
        Case 3
            Filter = "[项目名称] = '" & dr(0) & "'And [施工合同段] = '" & dr(1) & "' And [章节] = '" & dr(2) & "' And [子目] = '" & dr(3) & "'"
        Case 4
            Filter = "[项目名称] = '" & dr(0) & "'And [施工合同段] = '" & dr(1) & "' And [章节] = '" & dr(2) & "' And [子目] = '" & dr(3) & "'And [细目] = '" & dr(4) & "'"
    End Select
End If

If User.Name = "开发者" Or User.Name = "管理员" Then
    DataTables("工程量清单").LoadFilter = filter
    DataTables("工程量清单").LoadOver="支付编号"
    DataTables("工程量清单").LoadReverse = True
    DataTables("工程量清单").LoadTop= 5
    DataTables("工程量清单").Load
    Tables("工程量清单").sort="支付编号"
Else
    DataTables("工程量清单").loadfilter = "(承包人机构 = '" & User.Name & "' or 监理机构 = '" & User.Name & "' or 业主机构 = '" & User.Name & "') and " & Filter
    DataTables("工程量清单").LoadOver="支付编号"
    DataTables("工程量清单").LoadReverse = True
    DataTables("工程量清单").LoadTop= 5
    DataTables("工程量清单").Load
    Tables("工程量清单").sort="支付编号"
End If

vars("工程量清单filter") = DataTables("工程量清单").LoadFilter

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


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

请上传实例测试

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/5/12 16:41:00 [只看该作者]

实例

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/5/12 16:46:00 [只看该作者]

实例上传
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:翔路项目管理系统.zip


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


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

由于单元格数据有些本来就含有点号(.),建议分隔符改为其它符号,如:
"SELECT DISTINCT 项目名称,施工合同段,章节,子目号+ '|' +子目名称 as 子目,支付编号+ '|' +细目名称 as 细目 From {工程量清单}"

然后加载这样
……
If e.Node.Text <> "加载所有数据" Then
    
    Select Case e.Node.Level
        Case 0
            Filter = "[项目名称] = '" & dr(0) & "'"
        Case 1
            Filter = "[项目名称] = '" & dr(0) & "'And [施工合同段] = '" & dr(1) & "'"
        Case 2
            Filter = "[项目名称] = '" & dr(0) & "'And [施工合同段] = '" & dr(1) & "' And [章节] = '" & dr(2) & "'"
        Case 3
            Dim arr() As String = dr(3).split("|")
            Filter = "[项目名称] = '" & dr(0) & "'And [施工合同段] = '" & dr(1) & "' And [章节] = '" & dr(2) & "' And [子目号] = '" & arr(0) & "' and 子目名称='" & arr(1) & "'"
        Case 4
            Dim arr() As String = dr(3).split("|")
            Dim arr2() As String = dr(4).split("|")
            Filter = "[项目名称] = '" & dr(0) & "'And [施工合同段] = '" & dr(1) & "' And [章节] = '" & dr(2) & "' And [子目号] = '" & arr(0) & "' and 子目名称='" & arr(1) & "' And [支付编号] = '" & arr2(0) & "' and 细目名称='" & arr2(1) & "'"
    End Select
End If
……

 回到顶部