Foxtable(狐表)用户栏目专家坐堂 → [求助]复杂目录树筛选问题


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

主题:[求助]复杂目录树筛选问题

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


加好友 发短信
等级:小狐 帖子:383 积分:2439 威望:0 精华:0 注册:2011/12/3 22:19:00
[求助]复杂目录树筛选问题  发帖心情 Post By:2012/7/18 12:38:00 [只看该作者]

前一阵子在大家的帮助下,完成了负责目录树的编写,这个目录树是根据数据表自动生成的,但是对于nodemouseclick事件却带来了麻烦,我现在是这么而写的:

Dim Value()As String

Value = e.Node.FullPath.Split("\")

Select Case e.Node.Level

    Case 0

        Tables("设备表").Filter =" "

End Select

'如果点击的是第一层节点,那么就全部显示数据;相反如果点击的是其他的节点,那么就执行如下的筛选

 

 

Select Case  e.node.text

   

Case "动力设备"

    Tables("设备表").Filter = "[设备大类型] = '动力设备'"

Case "机械设备"

    Tables("设备表").Filter = " [设备大类型] = '机械设备' "

Case "停用"

Tables("设备表").Filter = " [使用状况] = '停用' "

Case "正在使用"

Tables("设备表").Filter = " [使用状况] = '正在使用' "

Case "未使用"

Tables("设备表").Filter = " [使用状况] = '未使用' "

 

End Select

 


这样也可以完成任务,但是数据表中的数据是变化的,这样的代码未必合适了,所以在此请大家帮助


 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目10.zip


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


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2012/7/18 13:36:00 [只看该作者]

Dim  flt1 As String
Dim Value() As String
Dim ls1 As New List(of String)
Value = e.Node.FullPath.Split("\")
Dim vs1() As  String ={"所在部门","安装地点"}
Dim vs2() As String ={"设备大类型","设备小类型"}

Select Case e.Node.Level
    Case 0
        Tables("设备表").Filter =""
    Case Else
        Select Case  value(0)
            Case  "按部门","按设备类型"
               ls1.AddRange(iif(value(0) = "按部门",vs1,vs2))
                For n1 As Integer = 1 To value.Length-1
                    flt1+=" and " &  Ls1(n1-1) &  iif(n1=1," like '" &  value(n1) & "%'" ," = '" & value(n1) & "'")
                Next   
            Case "按设备标识"
                flt1 =" and 设备标识 ='" & e.Node.Text & "'"
        End Select
        Tables("设备表").Filter = flt1.substring(5)
End Select
[此贴子已经被作者于2012-7-18 13:43:03编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/7/18 14:44:00 [只看该作者]

替换掉您的代码:

 

Dim s As String = e.Node.FullPath
Dim Values() As String
Values = s.split("\")
Dim Filter As String
If Values.Length = 1
    Filter = ""
Else
    If Values(0) = "按设备标识"
        Filter = "[设备标识] = '" & Values(1) & "'"
    End If
    If Values(0) = "按设备类型"
        Filter = "[设备大类型] = '" & Values(1) & "'"
       
        If e.Node.Level > 1
            If Values(2) IsNot Nothing
                Filter = Filter & " and  [设备小类型] = '" & Values(2) & "'"
            End If
        End If
    End If
    If Values(0) = "按部门"
        Filter = "[所在部门] like '" & Values(1) & "*'"
        If e.Node.Level > 1
            If Values(2) IsNot Nothing
                Dim dr As DataRow = DataTables("设备表").find("[所在部门] = '" & Values(1) & "\" & Values(2) & "'")
                If dr IsNot Nothing
                    Filter ="[所在部门] = '" & Values(1) & "\" & Values(2) & "'"
                Else
                    dr = DataTables("设备表").find("[所在部门] = '" & Values(1) & "' and [安装地点] = '" & Values(2) & "'")
                    If dr IsNot Nothing
                        Filter = "[所在部门] = '" & Values(1) & "' and [安装地点] = '" & Values(2) & "'"
                    End If
                End If
            End If
        End If
    End If
End If
Tables("设备表").Filter = Filter


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/7/18 15:08:00 [只看该作者]

呵呵,楼主的目录树不规范,所以写代码也不能按规范一些的写法!

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


加好友 发短信
等级:小狐 帖子:383 积分:2439 威望:0 精华:0 注册:2011/12/3 22:19:00
  发帖心情 Post By:2012/7/18 23:50:00 [只看该作者]

感谢hhbb和程斑竹的大力帮助,感谢你们为我提供思路,为这个纠结有段时间了,研究了很久,做的程序代码太复杂,还不能达到预期的效果,你们的都不错,认真学习中。

 回到顶部