以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]两级目录树节点定位问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=81017)

--  作者:cqlwsam
--  发布时间:2016/2/16 15:24:00
--  [求助]两级目录树节点定位问题

图片点击可在新窗口打开查看此主题相关图片如下:360反馈意见截图16230318313543.png
图片点击可在新窗口打开查看

如上图,设有treeview1控件,已经目录可以通过index来获取或确定节点位置。上图中父节点(name):骨科,子节点(name):畸形。

如何通过index获取子节点的位置。目录树刷新后重新定位在原来的子节点上。只有一级目录可以实现,二级目录就不知道怎么弄了。谢谢!

--  作者:大红袍
--  发布时间:2016/2/16 15:27:00
--  
 循环每一个节点,然后判断具体的name等值,然后选定节点。
--  作者:cqlwsam
--  发布时间:2016/2/16 15:56:00
--  
刷新之前应该知道父节点及子节点的位置和名称,其name不变。刷新后直接选择原来的父节点及子节点。我看了帮助可以用index确定位置。
--  作者:cqlwsam
--  发布时间:2016/2/16 16:00:00
--  
这是我写的代码,搞不定。
Dim trv As WinForm.TreeView =e.form.Controls("TreeView1")
Dim nd As WinForm.TreeNode = trv.SelectedNode
Dim id As Integer = nd.index
If nd Is Nothing Then
    Return
Else
    If nd.Level=0 Then
        Dim txt As String = trv.SelectedNode.FullName.split("\\")(0)
        Tables("基本信息_table1").Filter = "收治科室=\'" & txt & "\'"
    End If
    If nd.Level=1 Then
        Dim txt As String =trv.SelectedNode.FullName.split("\\")(0)
        Dim txt1 As  String =trv.SelectedNode.FullName.split("\\")(1)
        MainTable = Tables("基本情况")
        Tables("基本信息_table1").Filter="收治科室=\'" & txt & "\'And 疾病种类 = \'" & txt1 & "\'"
    End If
End If

Functions.Execute("目录树刷新")
trv.SelectedNode = trv.Nodes(id)

意思是原来没有选择,就不选择。原来选择的一级目录就选择一级目录,原来选择的是二级目录就选择二级目录。

[此贴子已经被作者于2016/2/16 16:01:38编辑过]

--  作者:大红袍
--  发布时间:2016/2/16 16:05:00
--  

必须循环每一个节点,然后判断,然后选中。


--  作者:大红袍
--  发布时间:2016/2/16 16:06:00
--  

 你直接find也可以

 

Dim tv As System.Windows.Forms.TreeView  = e.Form.Controls("TreeView1").BaseControl
Dim nd() As System.Windows.Forms.TreeNode = tv.Nodes.Find("cc",True)
If nd.Length > 0 Then
    tv.SelectedNode = nd(0)
End If


--  作者:cqlwsam
--  发布时间:2016/2/16 16:25:00
--  
那意思是先记录选择节点的名称,刷新后,通过循环选中符合条件的节点。
--  作者:cqlwsam
--  发布时间:2016/2/16 16:33:00
--  
在你的代码中cc是什么意思?


--  作者:大红袍
--  发布时间:2016/2/16 16:37:00
--  

cc是你节点name名称。

 

不用find的话,就循环每一个节点比较也行。


--  作者:cqlwsam
--  发布时间:2016/2/16 16:55:00
--  
好的,谢谢,我试试。