以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] TreeView目录树直接用SQL数据表?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=125955)

--  作者:2900819580
--  发布时间:2018/10/10 14:38:00
--  [求助] TreeView目录树直接用SQL数据表?
老师,直接用SQL出来的数据会死机,帮忙看一下代码有什么问题!

Dim cmd As new SQLCommand
Dim Sqldt As DataTable
cmd.C
cmd.CommandText = "Sele ct b.FNumber As 代码,b.FName As 名称,b.Fmodel as 规格型号 from AIS20170303202558.dbo.t_ICItemCore As b "
Sqldt = cmd.ExecuteReader


Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.GenerateTree(Sqldt,"代码","名称",".")

[此贴子已经被作者于2018/10/10 14:38:21编辑过]

--  作者:有点甜
--  发布时间:2018/10/10 15:17:00
--  

不是死机吧。是不是你获取的数据量太大?执行下面的代码,看你表格有多少行。

 

msgbox(sqldt.datarows.count)

[此贴子已经被作者于2018/10/10 15:17:34编辑过]

--  作者:2900819580
--  发布时间:2018/10/11 9:15:00
--  
以下是引用有点甜在2018/10/10 15:17:00的发言:

不是死机吧。是不是你获取的数据量太大?执行下面的代码,看你表格有多少行。

 

msgbox(sqldt.datarows.count)


老师,有2万多行,有没有快速的加载方法

[此贴子已经被作者于2018/10/10 15:17:34编辑过]


--  作者:有点甜
--  发布时间:2018/10/11 9:22:00
--  

每次只加载一层或两层的目录树,不全部生成

 

http://www.foxtable.com/webhelp/scr/2502.htm

 

类似 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=117734&skin=0

 

不会做,就发实例上来测试


--  作者:2900819580
--  发布时间:2018/10/11 11:24:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:文件目录树 (1).table

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

窗口2,图片是我想要的效果,辛苦老师了。。。。
[此贴子已经被作者于2018/10/11 11:24:42编辑过]

--  作者:有点甜
--  发布时间:2018/10/11 11:56:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:文件目录树 (1).table


--  作者:2900819580
--  发布时间:2018/10/11 13:38:00
--  
老师,你的版本太高了,我打不开,可以把代码复制出来一下吗/


--  作者:有点甜
--  发布时间:2018/10/11 14:26:00
--  

窗口2_Button2_Click

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim dt As DataTable = DataTables("表A")
Dim fi As String = "代码 not like \'%.%\'"
tr.nodes.Clear
Dim drs As List(of DataRow) = dt.Select(fi)
For Each dr As DataRow In drs
    Dim nd = tr.Nodes.Add(dr("代码"),dr("代码") & "(" & dr("名称") & ")")
    For Each cdr As DataRow In dt.Select("代码 like \'" & dr("代码") & ".%\'")
        If cdr("代码").split(".").length = dr("代码").split(".").length+1 Then
            nd.Nodes.Add(cdr("代码"),cdr("代码") & "(" & cdr("名称") & ")")
        End If
    Next
Next

 

 

窗口2_TreeView1_BeforeExpandNode

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim dt As DataTable = DataTables("表A")
Dim fi As String = "代码 like \'" & e.node.name & ".%\'"
e.node.nodes.Clear
Dim drs As List(of DataRow) = dt.Select(fi)
For Each dr As DataRow In drs
    If dr("代码").split(".").length = e.node.name.split(".").length+1 Then
        Dim nd = e.node.Nodes.Add(dr("代码"),dr("代码") & "(" & dr("名称") & ")")
        For Each cdr As DataRow In dt.Select("代码 like \'" & dr("代码") & ".%\'")
            If cdr("代码").split(".").length = dr("代码").split(".").length+1 Then
                nd.Nodes.Add(cdr("代码"),cdr("代码") & "(" & cdr("名称") & ")")
            End If
        Next
    End If
Next


--  作者:2900819580
--  发布时间:2018/10/12 13:45:00
--  
老师,那些没有下阶的,不想在目录树上显示出来,我加了红色的代码,但数据过大,还是会出现假死。

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim dt As DataTable = DataTables("表A")
Dim fi As String = "代码 like \'" & e.node.name & ".%\'"
\'e.node.nodes.Clear
Dim drs As List(of DataRow) = dt.Select(fi)
For Each dr As DataRow In drs
    Dim drs1 As List(of DataRow) = dt.Select("代码 like \'" & dr("代码") & ".%\'")
    If drs1.Count > 0 Then
        If dr("代码").split(".").length = e.node.name.split(".").length + 1 Then
            Dim nd = e.node.Nodes.Add(dr("代码"),dr("代码") & "(" & dr("名称") & ")")
            For Each cdr As DataRow In dt.Select("代码 like \'" & dr("代码") & ".%\'")
                If cdr("代码").split(".").length = dr("代码").split(".").length+1 Then
                    nd.Nodes.Add(cdr("代码"),cdr("代码") & "(" & cdr("名称") & ")")
                End If
            Next
        End If
    End If
Next

--  作者:有点甜
--  发布时间:2018/10/12 14:55:00
--  

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim dt As DataTable = DataTables("表A")
Dim fi As String = "代码 not like \'%.%\'"
tr.nodes.Clear
Dim drs As List(of DataRow) = dt.Select(fi)
For Each dr As DataRow In drs
    Dim nd = tr.Nodes.Add(dr("代码"),dr("代码") & "(" & dr("名称") & ")")
    For Each cdr As DataRow In dt.Select("代码 like \'" & dr("代码") & ".%\'")
        If cdr("代码").split(".").length = dr("代码").split(".").length+1 Then
            nd.Nodes.Add(cdr("代码"),cdr("代码") & "(" & cdr("名称") & ")")
            Exit For
        End If
    Next
Next

 

----------------------

 

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim dt As DataTable = DataTables("表A")
Dim fi As String = "代码 like \'" & e.node.name & ".%\'"
e.node.nodes.Clear
Dim drs As List(of DataRow) = dt.Select(fi)
For Each dr As DataRow In drs
    Dim ddr = dt.find("代码 like \'" & dr("代码") & ".%\'")
    If ddr IsNot Nothing Then
        If dr("代码").split(".").length = e.node.name.split(".").length+1 Then
            Dim nd = e.node.Nodes.Add(dr("代码"),dr("代码") & "(" & dr("名称") & ")")           
            For Each cdr As DataRow In dt.Select("代码 like \'" & dr("代码") & ".%\'")
                If cdr("代码").split(".").length = dr("代码").split(".").length+1 Then
                    Dim dddr = dt.find("代码 like \'" & cdr("代码") & ".%\'")
                    If dddr IsNot Nothing Then
                        nd.Nodes.Add(cdr("代码"),cdr("代码") & "(" & cdr("名称") & ")")
                        Exit For
                    End If
                End If
            Next
        End If
    End If
Next