各位大哥,小弟现在在做一个通过一个数据集的字段值对TreeView动态生成节点的问题,初步的想法是在数据表中设一个层的和子父节点的标志位,利用递归实现,请教各位大哥有什么好的在查询好的数据表中重新插入建表的方法和递归的方法!万分感谢……
目前主要是有多个表连接查询得到的 数据集
 如 
  city
  ID   Name  city_id
   1   北京   BJ001
   2   上海   SH001
  state
 ID      Name    city_state
 S001    海淀      1
 S002    西城      1
 S003    浦东      2
 S004    徐汇      2
 使用 select * from city,state where city.ID = state.city_state 

解决方案 »

  1.   

    建议楼主将表设计如下:
    表名:City
    ID   Name  city_id    ParentID
       1   北京   BJ001      0
       2   上海   SH001      0
       3   海淀   S001       1protected void Page_load()
    {
       if(!ispostback)
      {
          InitTree();
       }
    }//获取数据
    private DataTable GetAllData()
    {
       string s="select * from City";
       SqlConnection con=new SqlConnection(".....");
       SqlDataAdapter cmd=new SqlDataAdapter(s,con);
       DataSet ds=new DataSet();
       cmd.Fill(ds);
       return ds.Tables[0];
    }private InitTree(TreeNodeColliction tns,string parentid)
    {
       DataView dv=GetAllData().DefaultView();
       dv.RowFilter="Parentid="+Parentid;
       TreeNode tn;
       foreach(DataRowView drv in dv)
       {
          tn=new TreeNode();
          tn.Text=drv["name"].ToString();
          tn.ID=drv["id"].ToString();//Vs.net 2003中的表示
       /*  Vs.net 2005中的表示
       tn.Value=drv["id"].Tostring();       */
    //Vs.net 2003
          tns.Add(tn);
          InitTree(tn.Nodes,tn.ID); /*  Vs.net 2005中的表示
       InitTree(tn.ChildNodes,tn.ID);*/   }
    }
    private void InitTree()
    {
       InitTree(TreeView1.Nodes,"0");
    }
      

  2.   

    你这好像就两层,而且对应的是不同的表。你先用第一个表建第一层,把ID存放到TreeNode.Tag属性中。
    然后再循环加入第二层,这时候第一层的ID可以作为形成第二层节点参数。
      

  3.   

    用一张表就可以了
    parentID为null的是第一层节点,然后递规添加子节点
      

  4.   

    hxling1981(冷雨星空) 的方法应该是迄今为止比较方便而且经过多次验证的方法。
    表最好是建为一个,如果实在不行,那先查出第一个表的数据,生成节点,并保存到一个数组中。然后在循环里通过上面那个InitTree(TreeNodeColliction tns,string parentid)方法来做
      

  5.   

    一个表,加个父节点,如果是第一级,就将父节点设置为空字符。
    然后先提取一级节点,添加到TreeView中,交将ID设置到节点的Tag中,接着循环各个节点,以该节点的Tag为参数,提取父节点为该Tag值的数据,添加到该节点的子节点中。