Foxtable(狐表)用户栏目专家坐堂 → TreeView 节点单击“显示所有行”出错!


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

主题:TreeView 节点单击“显示所有行”出错!

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
TreeView 节点单击“显示所有行”出错!  发帖心情 Post By:2022/3/14 1:25:00 [只看该作者]

TreeView 节点单击“显示所有行”出错!麻烦老师指导一下!谢谢!

 

当前代码如下:

Dim Filter As String
Dim dr As DataRow = e.Node.DataRow '获取生成此节点的行
If e.Node.Text <> "显示所有行" Then
   
    If vars("分类")="按单位分类" Then
        Select Case e.Node.Level
            Case 0
                Filter = "[工作单位] = '" & dr("工作单位") & "'"
            Case 1
                Filter = "[工作单位] = '" & dr("工作单位") & "' And [级别归属] = '" & dr("级别归属") & "'"
            Case 2
                Filter = "[工作单位] = '" & dr("工作单位") & "' And [级别归属] = '" & dr("级别归属") & "' And [身份性质] = '" & dr("身份性质") & "'"
            Case 3
                Filter = "[工作单位] = '" & dr("工作单位") & "' And [级别归属] = '" & dr("级别归属") & "' And [身份性质] = '" & dr("身份性质") & "'And [姓名] = '" & dr("姓名") & "'"
        End Select
    Else
        Select Case e.Node.Level
            Case 0
                Filter = "[级别归属] = '" & dr("级别归属") & "'"
            Case 1
                Filter = "[级别归属] = '" & dr("级别归属") & "' And [工作单位] = '" & dr("工作单位") & "'"
            Case 2
                Filter = "[级别归属] = '" & dr("级别归属") & "' And [工作单位] = '" & dr("工作单位") & "' And [身份性质] = '" & dr("身份性质") & "'"
            Case 3
                Filter = "[级别归属] = '" & dr("级别归属") & "' And [工作单位] = '" & dr("工作单位") & "' And [身份性质] = '" & dr("身份性质") & "'And [姓名] = '" & dr("姓名") & "'"
        End Select
    End If
   
Else If e.Node.Text = "显示所有行" Then
    Tables("干部花名册_table1").Filter =""
End If
Tables("干部花名册_table1").Filter = Filter

 

运行结果及报错如下:


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

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


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

Dim Filter As String = ""
Dim dr As DataRow = e.Node.DataRow '获取生成此节点的行
If e.Node.Text <> "显示所有行" Then
    If vars("分类")="按单位分类" Then
        Select Case e.Node.Level
            Case 0
                Filter = "[工作单位] = '" & dr("工作单位") & "'"
            Case 1
                Filter = "[工作单位] = '" & dr("工作单位") & "' And [级别归属] = '" & dr("级别归属") & "'"
            Case 2
                Filter = "[工作单位] = '" & dr("工作单位") & "' And [级别归属] = '" & dr("级别归属") & "' And [身份性质] = '" & dr("身份性质") & "'"
            Case 3
                Filter = "[工作单位] = '" & dr("工作单位") & "' And [级别归属] = '" & dr("级别归属") & "' And [身份性质] = '" & dr("身份性质") & "'And [姓名] = '" & dr("姓名") & "'"
        End Select
    Else
        Select Case e.Node.Level
            Case 0
                Filter = "[级别归属] = '" & dr("级别归属") & "'"
            Case 1
                Filter = "[级别归属] = '" & dr("级别归属") & "' And [工作单位] = '" & dr("工作单位") & "'"
            Case 2
                Filter = "[级别归属] = '" & dr("级别归属") & "' And [工作单位] = '" & dr("工作单位") & "' And [身份性质] = '" & dr("身份性质") & "'"
            Case 3
                Filter = "[级别归属] = '" & dr("级别归属") & "' And [工作单位] = '" & dr("工作单位") & "' And [身份性质] = '" & dr("身份性质") & "'And [姓名] = '" & dr("姓名") & "'"
        End Select
    End If
End If
Tables("干部花名册_table1").Filter = Filter
[此贴子已经被作者于2022/3/14 3:37:50编辑过]

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


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

自己琢磨一下原因在哪里,对您有帮助!

Dim s,Filter As String
Filter = ""
Dim dr As DataRow = e.Node.DataRow '获取生成此节点的行
If e.Node.Text <> "显示所有行" Then
    If vars("分类")="按单位分类" Then
        s = "[工作单位] = '" & dr("工作单位") & "'| And [级别归属] = '" & dr("级别归属") & "'| And [身份性质] = '" & dr("身份性质") & "'| And [姓名] = '" & dr("姓名") & "'"
    Else
        s = "[级别归属] = '" & dr("级别归属") & "'| And [工作单位] = '" & dr("工作单位") & "'| And [身份性质] = '" & dr("身份性质") & "'| And [姓名] = '" & dr("姓名") & "'"
    End If
    For i As Integer = 0 To e.Node.Level
        Filter = Filter & s.Split("|")(i) 
    Next
End If
Tables("干部花名册_table1").Filter = Filter
[此贴子已经被作者于2022/3/14 7:35:10编辑过]

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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/14 8:42:00 [只看该作者]

Dim Filter As String

If e.Node.Text <> "显示所有行" Then
 Dim dr As DataRow = e.Node.DataRow '获取生成此节点的行  
    If vars("分类")="按单位分类" Then
        Select Case e.Node.Level

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)Dim Filter As StringIf e.Node.Text...  发帖心情 Post By:2022/3/14 11:00:00 [只看该作者]

谢谢程老师

 

经过核对  在生成目录树的时候  如果把红色部分代码注释掉  点击  显示所有行 不会出现楼上错误!

麻烦老师帮忙看看  我想把所有的目录树节点都对应的统计上数据,又要能够实现目录树节点点击后加载对应的节点条件数据

目前显示所有行不能加载

其他的节点都能加载

 

代码如下:

 

Dim cmd As New S QLCo mmand
Dim dt As DataTable
cmd.Conne c ti
cmd.Com mandText = "SEL ECT DISTINCT 所属室组,工作单位,级别归属,身份性质,姓名 From {干部花名册}"
dt = cmd.ExecuteReader()

Dim tv As WinForm.TreeView
tv =e.Form.Controls("TreeView1")
tv.BuildTree(dt, "工作单位|级别归属|身份性质|姓名")
tv.Nodes.Insert("显示所有行",0)
tv.StopRedraw

For i As Integer = 0 To tv.Nodes.Count-1
    If tv.Nodes(0).Text="显示所有行" Then
        Dim b0 As Integer=DataTables("干部花名册_table1").sqlCompute("count(姓名)")
        tv.Nodes(0).Text=tv.Nodes(0).Name & "(" & b0 & ")"
    Else
        Dim b As Integer=DataTables("干部花名册_table1").sqlCompute("count(姓名)","工作单位='" & tv.Nodes(i).Name & "'")
        tv.Nodes(i).Text=tv.Nodes(i).Name & "(" & b & ")"
        For i1 As Integer = 0 To tv.Nodes(i).Nodes.Count -1
            Dim b1 As Integer=DataTables("干部花名册_table1").sqlCompute("count(姓名)","工作单位='" & tv.Nodes(i).Name & "'and 级别归属='" & tv.Nodes(i).Nodes(i1).Name & "'")
            tv.Nodes(i).Nodes(i1).Text=tv.Nodes(i).Nodes(i1).Name & "(" & b1 & ")"
            For i2 As Integer = 0 To tv.Nodes(i).Nodes(i1).Nodes.Count -1
                Dim b2 As Integer=DataTables("干部花名册_table1").sqlCompute("count(姓名)","工作单位='" & tv.Nodes(i).Name & "'and 级别归属='" & tv.Nodes(i).Nodes(i1).Name & "'and 身份性质='" & tv.Nodes(i).Nodes(i1).Nodes(i2).Name & "'")
                tv.Nodes(i).Nodes(i1).Nodes(i2).Text=tv.Nodes(i).Nodes(i1).Nodes(i2).Name & "(" & b2 & ")"
            Next
        Next
    End If
Next

vars("分类")="按单位分类"
tv.ResumeRedraw

[此贴子已经被作者于2022/3/14 11:03:21编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(程兴刚)自己琢磨一下原因在哪里,对您有帮助...  发帖心情 Post By:2022/3/14 11:03:00 [只看该作者]

谢谢程老师

 

经过核对  在生成目录树的时候  如果把红色部分代码注释掉  点击  显示所有行 不会出现楼上错误!

麻烦老师帮忙看看  我想把所有的目录树节点都对应的统计上数据,又要能够实现目录树节点点击后加载对应的节点条件数据

目前显示所有行不能加载

其他的节点都能加载

 

代码如下:

 

Dim cmd As New S QLCo mmand
Dim dt As DataTable
cmd.Conne c ti
cmd.Com mandText = "SEL ECT DISTINCT 所属室组,工作单位,级别归属,身份性质,姓名 From {干部花名册}"
dt = cmd.ExecuteReader()

Dim tv As WinForm.TreeView
tv =e.Form.Controls("TreeView1")
tv.BuildTree(dt, "工作单位|级别归属|身份性质|姓名")
tv.Nodes.Insert("显示所有行",0)
tv.StopRedraw

For i As Integer = 0 To tv.Nodes.Count-1
    If tv.Nodes(0).Text="显示所有行" Then
        Dim b0 As Integer=DataTables("干部花名册_table1").sqlCompute("count(姓名)")
        tv.Nodes(0).Text=tv.Nodes(0).Name & "(" & b0 & ")"
    Else
        Dim b As Integer=DataTables("干部花名册_table1").sqlCompute("count(姓名)","工作单位='" & tv.Nodes(i).Name & "'")
        tv.Nodes(i).Text=tv.Nodes(i).Name & "(" & b & ")"
        For i1 As Integer = 0 To tv.Nodes(i).Nodes.Count -1
            Dim b1 As Integer=DataTables("干部花名册_table1").sqlCompute("count(姓名)","工作单位='" & tv.Nodes(i).Name & "'and 级别归属='" & tv.Nodes(i).Nodes(i1).Name & "'")
            tv.Nodes(i).Nodes(i1).Text=tv.Nodes(i).Nodes(i1).Name & "(" & b1 & ")"
            For i2 As Integer = 0 To tv.Nodes(i).Nodes(i1).Nodes.Count -1
                Dim b2 As Integer=DataTables("干部花名册_table1").sqlCompute("count(姓名)","工作单位='" & tv.Nodes(i).Name & "'and 级别归属='" & tv.Nodes(i).Nodes(i1).Name & "'and 身份性质='" & tv.Nodes(i).Nodes(i1).Nodes(i2).Name & "'")
                tv.Nodes(i).Nodes(i1).Nodes(i2).Text=tv.Nodes(i).Nodes(i1).Nodes(i2).Name & "(" & b2 & ")"
            Next
        Next
    End If
Next

vars("分类")="按单位分类"
tv.ResumeRedraw


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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/14 11:46:00 [只看该作者]

请上传实例说明

 回到顶部