以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  TreeView 节点单击“显示所有行”出错!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175647)

--  作者:cnsjroom
--  发布时间:2022/3/14 1:25:00
--  TreeView 节点单击“显示所有行”出错!

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
图片点击可在新窗口打开查看

--  作者:程兴刚
--  发布时间: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编辑过]

--  作者:程兴刚
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间: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
--  发布时间:2022/3/14 11:00:00
--  回复:(有点蓝)Dim Filter As StringIf e.Node.Text...

谢谢程老师

 

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

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

目前显示所有行不能加载

其他的节点都能加载

 

代码如下:

 

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
--  发布时间: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


--  作者:有点蓝
--  发布时间:2022/3/14 11:46:00
--  
请上传实例说明