以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 目录树不能全部显示  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=80846)

--  作者:317617216
--  发布时间:2016/2/3 18:41:00
--  [求助] 目录树不能全部显示
[求助] 目录树不能全部显示



此主题相关图片如下:1.png
按此在新窗口浏览图片


 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:项目1.foxdb



1.5.9以下的
1.5.10
1.5.11
请教为什么显示不了呢


代码如下:

窗口与控件事件

 

目录窗口_AfterLoad

 

\'(打开窗口自动生成,如是按钮Click事件则需点击按钮)

\' 点击按钮生成目录树.【递归:通过母序号与序号】

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")

Dim nd As WinForm.TreeNode

Dim dt As DataTable = DataTables("q")

tr.StopRedraw()

tr.Nodes.Clear

tr.Nodes.Add("全部")

For Each dr As DataRow In dt.datarows

    If dr.IsNull("母序号") Then

        nd = tr.Nodes.Add(dr("序号"),dr("序号") & dr("标题"))

        Functions.Execute("AddChildren",nd,dt)

    End If

Next

tr.ResumeRedraw()

 

目录窗口_Button1_Click

 

\' 点击按钮生成目录树.【递归:通过母序号与序号】

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")

Dim nd As WinForm.TreeNode

Dim dt As DataTable = DataTables("q")

tr.StopRedraw()

tr.Nodes.Clear

tr.Nodes.Add("全部")

For Each dr As DataRow In dt.datarows

    If dr.IsNull("母序号") Then

        nd = tr.Nodes.Add(dr("序号"),dr("标题"))

        Functions.Execute("AddChildren",nd,dt)

    End If

Next

tr.ResumeRedraw()

 

目录窗口_TreeView1_NodeMouseDoubleClick

 

\' 点击 目录 后 生成 目录树表,双击 节点 后 展开

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")

Dim key As String = e.Node.Name

Dim ids As String

If key = "全部" Then

    Tables("q").Filter = ""

Else

    For Each nd As WinForm.TreeNode In trv.AllNodes

        Dim pd As WinForm.TreeNode = nd

        Do

            If pd.Name = key Then

                If ids > "" Then

                    ids= ids &  ","

                End If

                ids = ids & "\'" & nd.name & "\'"

                Exit Do

            Else

                pd = pd.ParentNode

                If pd Is Nothing Then

                    Exit Do

                End If

            End If

        Loop

    Next

    Tables("q").Filter = "序号 In (" & ids & ")"

End If

 

自定义函数

 

AddChildren

 

\'http://www.foxtable.com/help/topics/2502.htm

Dim nd As WinForm.TreeNode = args(0)

Dim dt As DataTable = args(1)

For Each dr As DataRow In dt.Select("","序号")

    Dim km As String = dr("序号")

    If km.StartsWith(nd.Name) AndAlso km.Length = nd.Name.Length + 2 Then

        Dim cd As Winform.TreeNode = nd.Nodes.Add(km,km & " " & dr("标题"))

        Functions.Execute("AddChildren",cd,dt)

    End If

Next


--  作者:大红袍
--  发布时间:2016/2/3 19:47:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:项目1.foxdb


--  作者:317617216
--  发布时间:2016/2/3 20:35:00
--  
以下是引用大红袍在2016/2/3 19:47:00的发言:
 下载信息  [文件大小:320.0 KB  下载次数:0]
图片点击可在新窗口打开查看点击浏览该文件:项目1.foxdb


谢谢大红袍大师