Foxtable(狐表)用户栏目专家坐堂 → 动态生成目录树问题


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

主题:动态生成目录树问题

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2015/5/19 13:50:00 [显示全部帖子]

Dim s1,s2,s3,sql As String
For Each s1 In "类型,生产线,品种".split(",")
    If  Forms("窗口1").Controls(s1).checked = True Then
        s2 + = "," & s1
        s3 + = "|" & s1
    End If
Next

sql ="SELECT DISTINCT  Year(日期) As 年, Month(日期) As 月 " &  s2 & "  F rom {表A}"

Dim cmd As New SQLCommand
'cmd.C
Dim dt As DataTable
cmd.CommandText = sql
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = Forms("窗口1").Controls("TreeView1")
trv.BuildTree(dt, "年|月" & s3)

[此贴子已经被作者于2015/5/19 13:52:39编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2015/5/19 15:13:00 [显示全部帖子]

以下是引用liuruihua在2015/5/19 14:39:00的发言:
谢谢don,您的代码基本能实现我想要的结果,如果能实现对各复选框的勾选顺序进行分层级就更好,即先勾选的排放在前一级。
也可以:設一全局字符變量: Vars("LSP")

1.CheckedChanged


If "类型,生产线,品种".Contains(e.Sender.name)  Then

    If e.Sender.checked Then

        Vars("LSP")+ = "," & e.Sender.name

    Else

        Vars("LSP") = Vars("LSP").Replace("," & e.Sender.name,"")

    End If

End If


2.


'[窗口1] 的AfterLoad


Vars("LSP") = Nothing



3.

Dim s1,sql As String

if Vars("LSP") > "" then 

   s1 = Vars("LSP").Replace(",","|")

End if

sql ="SELECT DISTINCT  Year(日期) As 年, Month(日期) As 月 " &  Vars("LSP") & "  F rom {表A}"


Dim cmd As New SQLCommand

'cmd.C

Dim dt As DataTable

cmd.CommandText = sql

dt = cmd.ExecuteReader()

Dim trv As WinForm.TreeView = Forms("窗口1").Controls("TreeView1")

trv.BuildTree(dt, "年|月" & s1)



[此贴子已经被作者于2015/5/19 15:17:02编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2015/5/19 23:50:00 [显示全部帖子]

Dim Lst As New List(of String)
Dim s2,sql As String
Lst.AddRange(e.Node.FullPath.split("\"))

sql = "select * F" & "rom {表A} where Year(日期) = " & Lst(0)   
If Lst.count > 1 Then  sql = sql & " and Month(日期) = " & Lst(1)
If  Lst.Count > 2 Then
    For n1 As Integer = 2 To Lst.count -1
        s2 = s2 & " and " &  Vars("LSP").split(",")(n1-1) & " = '" & Lst(n1) & "'"
    Next
    sql+=  s2
End If

e.Form.Controls("Table1").Table.FILL(sql,"",1)

 回到顶部