tb
col1      col2         col3
5         aaa            0
5.1       bbb            5
5.2       ccc            5
5.3       ddd            5
5.2.1     eee            5.2
5.3.1     fff            5.3
5.2.1.1   ggg            5.2.1
6         hhh            0
6.1       ttt            6表 col1 是主键..
现在在treeview中样式
5aaa
|__5.1bbb
|__5.2ccc
  |___5.2.1eee
  |____5.2.1.1ggg
|__5.3ddd
  |__5.3.fff
6hhh
 |__6.1ttt先加载"select * from tb wher col3=0"
Dim nx As Node
dim rstM as new adodb.recordset
set nx =TreeMan.Nodes.Add(, , rstM!col1, rstM!col1 & "-" & rstM!col2, 0) 
''加载第一层没问题..
然后怎么加载下面的层次?用col3做条件,,怎么来写?

解决方案 »

  1.   

    用循环判断节点关系,再添加数据库设计不灵活,若有N层的话很难处理建议参考大师级人物的博客:
    http://blog.csdn.net/lihonggen0/archive/2004/01/07/13648.aspx
      

  2.   

    给你个参考代码,有悟性的话你自己做出来,否则就算了
    '新建一个窗体,上面放一个TreeView和一个ListView,一个ListImage
    'ListImage控件要添加8张以上一样大小的icon文件
    'TreeView1和ListView的图像列表都设置成ListImage1
    Private Sub Form_Load()
    TreeView1.Style = tvwTreelinesPlusMinusPictureText
    TreeView1.LabelEdit = tvwManual
    TreeView1.Checkboxes = True
    ListView1.View = lvwIcon
    ListView1.BorderStyle = ccFixedSingleTreeView1.Nodes.Add , , "r", "学籍管理信息系统", 1
        TreeView1.Nodes.Add "r", tvwChild, "r1", "学生基本信息", 2
            TreeView1.Nodes.Add "r1", tvwChild, "r11", "个人信息", 3
            TreeView1.Nodes.Add "r1", tvwChild, "r12", "家庭信息", 3
        TreeView1.Nodes.Add "r", tvwChild, "r2", "学习成绩", 4
            TreeView1.Nodes.Add "r2", tvwChild, "r21", "专业成绩", 5
            TreeView1.Nodes.Add "r2", tvwChild, "r22", "英语成绩", 5
        TreeView1.Nodes.Add "r", tvwChild, "r3", "社团活动", 6
            TreeView1.Nodes.Add "r3", tvwChild, "r31", "政治面貌", 7
            TreeView1.Nodes.Add "r3", tvwChild, "r32", "获奖情况", 7
    For i = 1 To TreeView1.Nodes.Count
        TreeView1.Nodes(i).Expanded = True
    Next i
      

  3.   

    set rs="select * from tb wher col3='" & rstM!col1 & "' "
    TreeMan.Nodes.Add rstM!col1,tvwChild, rs!col1, rs!col1 & "-" & rs!col2, 0)
      

  4.   

    sorry 看错了,也说错!
    这句话无效{数据库设计不灵活,若有N层的话很难处理}
      

  5.   

    这个循环好像不太好写吧!!怎么去得到col3的数值啦?
      

  6.   

    无限的也没什么
    看看
    SQL (我这里是call存储过程)的结果是
    0,判断存储过程的运转结果,不用考虑
    1,节点的类型
    2,父节点的key
    3,子节点                If IsNull(objRS(2)) Then
                        'root node
                        Set objNode = .Nodes.Add(Null, tvwChild, "Node" & Trim$(objRS(1)) & Trim$(objRS(3)), Trim$(objRS(4)), 1, 2)
                        objNode.Expanded = True
                    Else
                        If Trim$(objRS(1)) = "G" Then
                            Set objNode = .Nodes.Add("NodeG" & Trim$(objRS(2)), tvwChild, "Node" & Trim$(objRS(1)) & Trim$(objRS(3)), Trim$(objRS(4)), 1, 2)
                        Else
    end if
      

  7.   

    那就直接select * from tb 不用条件
    读出记录之后判断col1 col2 col3
      

  8.   

    本帖最后由 bcrun 于 2011-03-31 19:37:00 编辑
      

  9.   

    "select * from tb order by col1 "
    Dim nx As Node
    dim rstM as new adodb.recordsetwhile not rstM.eof
        if rstM!col3=0 then
            set nx =TreeMan.Nodes.Add(, , rstM!col1, rstM!col1 & "-" & rstM!col2, 0)  
        else
            set nx=TreeMan.Nodes.Add (rstM!col3,tvwChild, rs!col1, rs!col1 & "-" & rs!col2, 0)
        end if    rstM.movenext
    wend