嵌套试试
以前做DataList的时候,就是嵌套做到绑定父类下面子类的类似树状节点
和TreeView原理是一样的

解决方案 »

  1.   

    private void InitTree(TreeNodeCollection Nds,string parentId)
    {
    DataView dv=new DataView();
    TreeNode tmpNd;
    string intId;
    dv.Table=ds.Tables["tree"];

    dv.RowFilter="ParentId="+ parentId;
    foreach(DataRowView drv in dv)
    {
    tmpNd=new TreeNode();
    tmpNd.ID=drv["id"].ToString();
    tmpNd.Text=drv["sortname"].ToString();
    tmpNd.NavigateUrl="InfoSort.aspx?info_id="+drv["id"].ToString();
    Nds.Add(tmpNd);
    intId=drv["ParentId"].ToString();
    InitTree(tmpNd.Nodes,tmpNd.ID);
    }
    }
      

  2.   

    递归实现public void BindCategoryTreeVew(TreeView treeView, bool isExpanded, string sSelectedData)
        {
            SqlConnection conn = DB.conCreate();
            SqlDataAdapter sda = new SqlDataAdapter("select * from Procduct_Type", conn);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            //将获取的数据转换为   一个DataTable 
            DataTable dt = ds.Tables[0];
            treeView.Nodes.Clear();//清空树的所有节点 
            //获取与排序顺序中的筛选器以及指定的状态相匹配的所有System.Data.DataRow   数组         DataRow[] rowList = dt.Select("ParentID=0");
            foreach (DataRow row in rowList)
            {
                TreeNode rootNode = new TreeNode();
                rootNode.Text = "<b>"+row["Name"].ToString()+"</b>";
                rootNode.Value = row["ID"].ToString();
                rootNode.Expanded = isExpanded;
                rootNode.Selected = true;
                rootNode.NavigateUrl = "../bigclass.aspx?id=" + rootNode.Value.ToString();
                treeView.Nodes.Add(rootNode);
                CreateChildNode(rootNode, dt, isExpanded, sSelectedData);
            }
        }    //创建子节点
        private void CreateChildNode(TreeNode parentNode, DataTable dt, bool isExpanded, string sSelecedData)
        {
            //选择数据,添加排序表达市 
            DataRow[] rowList = dt.Select("ParentID=" + Convert.ToInt32(parentNode.Value));
            foreach (DataRow row in rowList)
            {
                //创建一个新的节点了 
                TreeNode node = new TreeNode();
                node.Text = row["Name"].ToString();
                node.Value = row["ID"].ToString();
                node.Expanded = isExpanded;
                //node.SelectAction = TreeNodeSelectAction.None;
           
                             node.NavigateUrl = "../smallclass.aspx?id=" + node.Value.ToString();
                
                if (node.Value == sSelecedData)
                {
                    node.Selected = true;
                }
                parentNode.ChildNodes.Add(node);
                //递归调用,创建其他节点 
                CreateChildNode(node, dt, isExpanded, sSelecedData);
            }
        }
      

  3.   

    递归很慢啦.用dataset的relation方法比较好.