以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]目录树代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=44632)

--  作者:cqlwsam
--  发布时间:2014/1/5 17:36:00
--  [求助]目录树代码
想实现如图的目录树,代码如何写?

图片点击可在新窗口打开查看此主题相关图片如下:360软件小助手截图20140105172747.jpg
图片点击可在新窗口打开查看


一级目录是收治科室,来自表“基本信息”
二级目录是患者姓名,也来自表“基本信息”
三级目录是各种资料,包括:地址信息、病史资料、体征资料、检验资料、检查资料、其他资料
四级目录是各种资料的细分,病史资料包括:家族史、手术治疗史等等,体征资料包括:系统检查、专科检查等;检验资料包括血液分析、尿液分析等等
五级目录是各种资料再细分,如:血液分析将从表“血液分析”按患者PatientsID筛选来的数据,如果有则目录树显示检查日期,如果无,则无五级目录,但双击后可以添加血液分析结果。

如何用代码搞定?

--  作者:lsy
--  发布时间:2014/1/5 17:52:00
--  

目录树的缺点,是层级多,不像表,一目了然。

你这目录树,共有五级,操作人员会不高兴的。


--  作者:cqlwsam
--  发布时间:2014/1/5 19:38:00
--  
因为目前医院使用的就这样!一级目录会通过授权,只显示自己所属的科室,这样就只有四级目录了。
[此贴子已经被作者于2014-1-5 19:40:25编辑过]

--  作者:有点甜
--  发布时间:2014/1/5 20:19:00
--  
 如果是特制的目录树,就只能用递归自己做了,建议你还是直接用列去生成,简单方便。


--  作者:cqlwsam
--  发布时间:2014/1/5 21:10:00
--  
使用如下代码,得到了三级目录。
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("基本情况","收治科室|姓名")
trv.StopRedraw \'停止绘制目录树
For Each nd As WinForm.TreeNode In trv.AllNodes \'遍历所有节点
    If nd.level=1 Then
        nd.Text = nd.text & "(" & nd.DataRow("patientsID") & ")"
        nd.Nodes.Add("地址信息","地址信息","007.png")
        nd.nodes.add("基本信息")
        nd.nodes.add("地址信息")
        nd.nodes.add("病史资料","病史资料","001.png")
        nd.nodes.add("体检资料")
        nd.nodes.add("检验资料")
        nd.nodes.add("检查资料")
        nd.nodes.add("其它资料")
    End If
Next
trv.ResumeRedraw \'恢复绘制目录树

在三级目录下再添加子目录就搞不懂了。指点一下。谢谢!

--  作者:有点甜
--  发布时间:2014/1/5 21:47:00
--  
 比如,代码可以这样写

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("基本情况","收治科室|姓名")
trv.StopRedraw \'停止绘制目录树
For Each nd As WinForm.TreeNode In trv.AllNodes \'遍历所有节点
    If nd.level=1 Then
        nd.Text = nd.text & "(" & nd.DataRow("patientsID") & ")"
        Dim node As WinForm.TreeNode
        Dim cnode As WinForm.TreeNode
        Dim ccnode As WinForm.TreeNode
        node = nd.Nodes.Add("地址信息","地址信息","007.png")
        cnode = node.Nodes.Add("我是第四级")
        ccnode = cnode.Nodes.Add("我是第五级")
    End If
Next

--  作者:cqlwsam
--  发布时间:2014/1/5 21:56:00
--  
我看了一个例子:
Dim nd As WinForm.TreeNode
tr = Forms("窗口1").Controls("TreeView1")
nd = Tr.Nodes.Add("Root1","根节点一")
nd.Nodes.Add("Sub1","子节点一")
nd.Nodes.Add("Sub2","子节点二")
nd = Tr.Nodes.Add("Root2","根节点二")
nd.Nodes.Add("Sub3","子节点三")
nd.Nodes.Add("Sub4","子节点四")
外面在加一层循环,我试了一下,不行。

--  作者:有点甜
--  发布时间:2014/1/5 22:05:00
--  
 看6楼,不是是可以任意建立的么?
--  作者:cqlwsam
--  发布时间:2014/1/5 22:11:00
--  
按您的方法可以任意建立。谢谢!