treeview显示树形表时,节点重复出现两次,不知道什么原因??
高手帮帮忙

解决方案 »

  1.   

    #region 组织目录树    SqlConnection conn;
        DataSet ds;
        protected void Page_Load(object sender, EventArgs e)
        {
            //   在此处放置用户代码以初始化页面
            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.DataBind();
                }
                finally
                {
                    conn.Close();
                    conn.Dispose();
                }
             }
        }
        //建立数据集
        private DataSet CreateDataSet()
        {
            SqlDataAdapter sda;
            DataSet ds;
            string cmdselect;
            cmdselect = "select * from tree";
            sda = new SqlDataAdapter(cmdselect, conn);
            ds = new DataSet();
            sda.Fill(ds, "tree");
            return ds;
        }    //建树的基本思路是:从根节点开始递归调用显示子树     
        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);//递归,添加该节点的子节点
            }    }
      

  2.   

    public void AddChildNode(string sqltj,TreeNode tn)
        {
            string sql = "select * from AddNodes where ParentID";//查询该父节点下还有无子节点SQL语句
            if (sqltj == "NULL")
            {
                sql += " IS NULL";//也就是说是根节点下面的第一级子节点
            }
            else
            {
                sql += "=" + sqltj;//查询sqltj下有无子节点
            }
            
            DataTable dt = this.dtDataBind(sql);
            if (dt.Rows.Count == 0)
            {
                return;
            }
            else
            {
                for (int i = 0; i < dt.Rows.Count; i++)//循环DataTable表中子节点记录
                {
                    TreeNode tnchild = new TreeNode();//创建新的子节点
                    tnchild.Text = dt.Rows[i][1].ToString();//为新建子节点的文本赋值
                    tnchild.Value = dt.Rows[i][1].ToString();//为新建子节点的Value赋值
                    tnchild.Expanded = true;//设置为不展开节点
                    tn.ChildNodes.Add(tnchild);//添加此节点的下一级子节点
                    
                    this.AddChildNode(dt.Rows[i][0].ToString(),tnchild);
                }
            }
        }
      

  3.   

    public DataTable dtDataBind(string sql)
        {
            this.conString();
            da = new SqlDataAdapter(sql,con);
            dt = new DataTable();
            da.Fill(dt);
            return dt;
        }
      

  4.   

    SqlConnection conn=new SqlConnection();
    conn.ConnectionString=System.Configuration.ConfigurationSettings.AppSettings["DB"].ToString();
    SqlCommand cmd=new SqlCommand("select * from sort",conn);
    SqlDataAdapter da=new SqlDataAdapter(cmd);
    DataSet ds=new DataSet("sort");
    da.Fill(ds);


    for(int ni=0;ni<ds.Tables[0].Rows.Count;ni++)
    {
    TreeNode Node=new TreeNode();
    Node.Text = ds.Tables[0].Rows[ni]["sortname"].ToString();
    Node.Target=ds.Tables[0].Rows[ni]["sortid"].ToString();
    node8.Nodes.Add(Node); 
    int n=Int32.Parse(ds.Tables[0].Rows[ni]["sortid"].ToString()); }