以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  定位树节点问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=66243)

--  作者:lzzhx
--  发布时间:2015/4/1 20:46:00
--  定位树节点问题
请教老师:
  如截图所示,现能在点击树节点后,表自动定位到相应记录。有没有办法在表中选择不同记录后,也将树节点定位到相应节点上?

--  作者:lzzhx
--  发布时间:2015/4/1 20:48:00
--  
图没有传上去图片点击可在新窗口打开查看
--  作者:有点甜
--  发布时间:2015/4/1 20:51:00
--  

 循环所有的节点。比如

 

For Each nd As Object In trv.AllNodes
   
    If nd.Name = Tables("表A").Current("第一列") Then
       
        trv.SelectedNode = nd
       
        Exit For
       
    End If
   
Next


--  作者:lzzhx
--  发布时间:2015/4/1 20:55:00
--  
老师:
  循环节点会不会引发节点的AfterSelectNode事件,因为我在节点的AfterSelectNode事件中有如下代码:
\'部门管理_TreeView1_AfterSelectNode
\'选择节点后执行
If e.Node.FullName <> "所有部门" Then
    Dim a As String = e.Form.Controls("借用标签").text & Replace(e.Node.FullName,"\\",".")
    Dim dr As DataRow
    dr = DataTables("部门表").Find("[部门编号] = \'" & a & "\'")
    If dr IsNot Nothing Then
        Dim wz As Integer = Tables("部门表").FindRow(dr)
        If wz >= 0 Then
            Tables("部门表").Position = wz
        End If
    End If
Else
    Tables("部门表").Position = 0
End If

--  作者:lzzhx
--  发布时间:2015/4/1 20:57:00
--  
图片传不上去,再试一下

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


--  作者:有点甜
--  发布时间:2015/4/1 20:57:00
--  

 循环节点不会触发事件,设置 selectedNode 才会触发,触发可以避免,参考

 

 http://www.foxtable.com/help/topics/2218.htm

 


--  作者:lzzhx
--  发布时间:2015/4/1 21:02:00
--  
老师:
  麻烦看一下我的 AfterSelectNode事件代码有没有什么问题。目的是选定节点后定位到表中相应记录上。

--  作者:有点甜
--  发布时间:2015/4/1 21:05:00
--  
If e.Node.FullName <> "所有部门" Then
    Dim wz As Integer = Tables("部门表").FindRow(e.Node.DataRow)
    If wz >= 0 Then
        Tables("部门表").Position = wz
    Else
        Tables("部门表").Position = 0
    End If   
End If
 

--  作者:lzzhx
--  发布时间:2015/4/1 21:11:00
--  
老师:
  在树新了节点后,在窗体没有重新打开时,引用新增节点 e.Node.DataRow 会出错

--  作者:有点甜
--  发布时间:2015/4/1 21:12:00
--  
 If e.Node.FullName <> "所有部门" Then
    Dim a As String = e.Form.Controls("借用标签").text & Replace(e.Node.FullName,"\\",".")
    Dim dr As DataRow
    dr = DataTables("部门表").Find("[部门编号] = \'" & a & "\'")
    If dr IsNot Nothing Then
        Dim wz As Integer = Tables("部门表").FindRow(dr)
        If wz >= 0 Then
            Tables("部门表").Position = wz
        End If
    Else
        Tables("部门表").Position = 0
    End If
Else
    Tables("部门表").Position = 0
End If