下面是我的程序 
if (!this.IsPostBack)
        {
            db dbase = new db();
            conn = dbase.getConn();
            try
            {
                conn.Open();
                ds = CreateDataSet();
                DataTable dt = new DataTable();
                dt = ds.Tables[0];
                InitTree(dt, null, "0");
                //this.TreeView1.DataSource = ds;
                this.TreeView1.DataBind();
            }
            finally
            {
                conn.Close();
                conn.Dispose();
            }
        }

解决方案 »

  1.   

    1 首先你要确定数据源里面的数据格式是正确的
    2 你的init方法处理到底如何了?是否正确了?
    3 建议你单步调试下
      

  2.   

    把InitTree(dt, null, "0");
    贴出来看看
      

  3.   

    所有节点都重复两次,不知道为什么?下面是我的循环节点程序
    private void InitTree(DataTable dt, TreeNode node, string id)
        {
            DataRow[] rows = dt.Select("ParentId='" + id + "'");//筛选出属于父节点“node”的子节点集合        foreach (DataRow drv in rows)   //循环子节点集合
            {
                TreeNode tn = new TreeNode();
                tn.Value = drv["NodeId"].ToString();    //存放节点ID
                tn.Text = drv["NodeName"].ToString();   //设置节点名称         
                //theNode.text="<span   title="   &   txt   &   ">"   &   txt   &   "</span>"
                tn.ImageUrl = "image/folderopen.gif";
                if (node == null | id == "0")
                {
                    this.TreeView1.Nodes.Add(tn); //添加至根节点
                }
                else
                {              
                    node.ChildNodes.Add(tn);//添加子节点
                }
                this.InitTree(dt, tn, tn.Value);//递归,添加该节点的子节点
            }    }