你确认是在表完全更新后再重新生成TreeView中的记录的吗?有时数据post了,但是相应的表并没有更新,需要commit才可以。

解决方案 »

  1.   

    确定。因为如果在节点操作完(更新数据库),如果我单独运行加载Sub,则次次灵验,就是把这段放到节点操作里,就不一定了。就好象慢半排一样。而且我每次加载是重新打开记录集。是不是TreeView有个什么“记忆功能”。真的快气疯了。
      

  2.   

    nodX.Expanded = True
    用这个试一下
      

  3.   

    不是TreeView有个什么“记忆功能”。
    可能是你的数据库还没有完成更新,比如速度慢,而这里已经开始更新TreeView了,当然这个时候就有干什么类似的“记忆功能”了
      

  4.   

    Public Function SeekTkt(ByVal sCode As String)
        Dim nIndex As Integer
        Dim nodeX As MSComctlLib.node
        Dim strSQL As String
        
        With Treeview
            For nIndex = 1 To .Nodes.Count
                Set nodeX = .Nodes(nIndex)
                If Trim(nodeX.Text) = sCode Then Exit For
            Next nIndex
            
            If nIndex < .Nodes.Count Then
                .Nodes(nIndex).Selected = True
                .DropHighlight = tvwHeader.SelectedItem
                Call Treeview_NodeClick(.SelectedItem)
                Call RefreshNode(.SelectedItem)
                .SetFocus
            Else
                Call FillTicketTree(strSQL, strSQL)  '添加treeview的code
                
                Set nodeX = .Nodes(.Nodes.Count)
                If nodeX Is Nothing Then Exit Function
                nodeX.Selected = True
                .DropHighlight = tvwHeader.SelectedItem
                Call tvwHeader_NodeClick(.SelectedItem)
            End If
        End With
        
    End Function以上是我优化时候用的,速度比原来快,好像没有遇到你的那个刷新的问题。可以试试,都是高手,请提意见
      

  5.   

    就是说这,你单独调用没错,但在点饥接点时(此时要求Node存在)又删除所有接点,如下:
    sub N_Click(nNode as Node)
        tree.clear'nNode已经没了
        load '加载新接点
        nNode.haha'nNode 还是以前的nNode么
    end Sub