Foxtable(狐表)用户栏目专家坐堂 → [求助] TreeView目录树直接用SQL数据表?


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

主题:[求助] TreeView目录树直接用SQL数据表?

帅哥,在线噢!
2900819580
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1319 积分:9579 威望:0 精华:0 注册:2015/6/30 8:46:00
[求助] TreeView目录树直接用SQL数据表?  发帖心情 Post By:2018/10/10 14:38:00 [只看该作者]

老师,直接用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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/10 15:17:00 [只看该作者]

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

 

msgbox(sqldt.datarows.count)

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

 回到顶部
帅哥,在线噢!
2900819580
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1319 积分:9579 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By:2018/10/11 9:15:00 [只看该作者]

以下是引用有点甜在2018/10/10 15:17:00的发言:

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

 

msgbox(sqldt.datarows.count)


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

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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1319 积分:9579 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By:2018/10/11 11:24:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:文件目录树 (1).table

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

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/11 11:56:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:文件目录树 (1).table


 回到顶部
帅哥,在线噢!
2900819580
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1319 积分:9579 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By:2018/10/11 13:38:00 [只看该作者]

老师,你的版本太高了,我打不开,可以把代码复制出来一下吗/


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1319 积分:9579 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By: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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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


 回到顶部
总数 14 1 2 下一页