树结构如下:
1-|-5
  |-62-|-7 
  |-8-|-13
  |   |-14
  |
  |-9-|-153-|-10
  |-11-|-16-|-17
  |         |-18
  |-12      |-19
            |-20简单说一下吧,index是从第一级开始的,也就是说我是先把主集添加好才添加子集的
但是我现在需要的是从第一级开始取,如果有子类就取子类,没子类就取下一个
也就是说,先取1,再取5,再取6,因为没有子集了所以取2
然后取7,取8.取13,取14,取9,取15,取3,取10,取11,取16,取17,取18,取19,取20,取12
不知道大家看明白了没有

解决方案 »

  1.   

    如果数据库是oracle就很好解决。不知你用什么数据库?
      

  2.   

    分级编码作为节点的Key,不知道可不可以?
    比如:
    a-|-aa
      |-abb-|-ba 
      |-bb-|-bba
      |    |-bbb
      |
      |-bc-|-bcac-|-ca
      |-cb-|-cba-|-cbaa
      |          |-cbab
      |-cc       |-cbac
                 |-cbad
      

  3.   

    我的key是没办法设置规律的,如果能设置规律也就好办了
    请以我的树结构为基础考虑,谢谢
      

  4.   

    我有个方法不过取法不一样,不知道行不行先贴给你看看
    Private Function SearchChildNod(curNod As Node) As String
        Dim i As Long
        Dim oNode As Node
        Dim oNode2 As Node
        If curNod.Children > 0 Then        Set oNode = curNod.Child
            For i = 1 To curNod.Children
                
                SearchChildNod = SearchChildNod + oNode.Text + vbCrLf
                Set oNode2 = oNode
                If oNode2.Children > 0 Then
                    SearchChildNod = SearchChildNod + SearchChildNod(oNode2)
                End If
                Set oNode = oNode.Next
            Next
    '        Set oNode = curNod.Child
    '        SearchChildNod (oNode)
        End If    
        
    End Function