SQL的搜索结果中包括三个字段
一级名     二级名     三级名     其他相关数据........
1  001    10011     33434 234
1  001    10012     32323
1  003    10031     aaaaaaa 007
1  003    10032     rwerew 0004
1  003    10033     33434 234
2  004    20041     32323
2  004    20042     aaaaaaa 007
2  004    20043     rwerew 0004我想最后Tree中的显示结果是这样的(加号可以折叠,最终的导航就是最底层那8条记录),不知道我说明白了吗?现在没有思路,帮忙给我的思路,有现成代码就更好了,谢谢
+1---
    +001----
            10011
            10012
    +003----10031
            10032
            10033
+2---
     +004---
            20041     
            20042     
            20043     
           

解决方案 »

  1.   

    绑定这个控件就行了.初始化时,查询一次,当点击tree控件中结点时,查询当头点击结点下的数据,再次绑定就行了.当然,也可以在页岩初始化时,一次绑定所有的数据,只不过这样速度会慢点,处理也会复杂点,得用循环嵌套了.
      

  2.   

    写个递归方法,再调用tree的addnode方法(记不清楚了),思路就是这样。注意:数据量大时,树显示时有点慢!
      

  3.   

    1.先绑定第一级的节点和下面第二级的节点
    也就是
    +1--- 
        +001---- 
        +003----
                
    +2--- 
        +004--- 
                 
    方法可以单独写出来(方法只需要搜索1,2 等这些节点)
    类似于: IList list = xx.selseAll();//查找一级节点
                TreeNode temp ;
                for (int i = 0; i < list.Count; i++)
                {
                    temp = new TreeNode();
                     类 rpt = (类)list[i];
                    //这里可以使用树节点展开的时候才加载下级字节点
                      temp.PopulateOnDemand = true;                temp.Value = rpt.Id.ToString();
                    temp.Text = rpt.Typename;
                    temp.Collapse();
                    TreeView1.Nodes.Add(temp);
                    
                }
    //树的这个方法
     protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
            {
               IList list =xx.selectTwo(new Guid(e.Node.Value));
                foreach (类 rpt in list)
                {
                    TreeNode temp = new TreeNode();
                    temp.Value = rpt.Id.ToString();
                    ////////////如果还有下级节点的话,同样设置在展开是加载下级节点
                     temp.PopulateOnDemand = true;                 temp.Text = rpt.Typename;
                    /////这里你需要注意一下,因为你只需要最底层那8条数据导航,需要判断一下,像001这种应该是很容易判断的
                   temp.NavigateUrl = string.Format("RSEmbodyList.aspx?id={0}&schooltype={1}&areaId={2}&typeName=NOspcail&type={3}", rpt.Id, Request.QueryString["schooltype"], Request.QueryString["AreaID"], Request.QueryString["type"]);
                    temp.Target = "fraBEmbodySearchRightTFrame";                e.Node.ChildNodes.Add(temp);
                 
                }
            }