代码如下,是用递归加上去的。结果是节点都加上去了,但好像统一都加到跟节点上了,没有显示层次。如何让TREEVIEW按照层次显示。
         DataTable myDT = Convertdrtodt(myDS);        DataRow[] tmpDR = myDT.Select("DeptID = UpDeptID");
        
        Response.Write(tmpDR[0][0]);       TreeNode myNode = new TreeNode(tmpDR[0][1].ToString());       tvDept.Nodes.Add(myNode);       LoadChildDepartMent(tmpDR[0][0].ToString(), myNode, myDT);
    private void LoadChildDepartMent(string currentDeptCode, TreeNode parentNode, DataTable myDT)
    {         
      //dtData.DefaultView.RowFilter = "DeptID = UpDeptID";        //TreeNode myNode = new TreeNode(myDT.DefaultView.Find("DeptID = UpDeptID"));
        
        DataRow[] tmpDR = myDT.Select("DeptID <> UpDeptID AND UpdeptID = '" + currentDeptCode + "'") ;        for (int i = 0; i <= tmpDR.Length - 1; i++)
        {
            TreeNode myNode = new TreeNode(tmpDR[i][1].ToString());
            tvDept.Nodes.Add(myNode);
            LoadChildDepartMent(tmpDR[i][0].ToString(), myNode, myDT);
        }
    }

解决方案 »

  1.   

    你所有的节点都加到了根节点上
    tvDept.Nodes.Add(myNode);
    LoadChildDepartMent这个方法可改为
    private void LoadChildDepartMent(string currentDeptCode, TreeNode parentNode, DataTable myDT) 
        { 
            
            DataRow[] tmpDR = myDT.Select("DeptID <> UpDeptID AND UpdeptID = '" + currentDeptCode + "'") ;         for (int i = 0; i <= tmpDR.Length - 1; i++) 
            { 
                TreeNode myNode = new TreeNode(tmpDR[i][1].ToString()); 
                parentNode.Nodes.Add(myNode); 
                LoadChildDepartMent(tmpDR[i][0].ToString(), myNode, myDT); 
            } 
        }
      

  2.   

    我查了一下,的确是都加到根节点了。
    但是 parentNode.Nodes.Add(myNode)的语法有问题,系统过不了啊。
    改成 parentNode.Nodes.Add(myNode) 也不行;不知各位大侠有无其他方法,请指教。
      

  3.   

    我看网上很多方法都可以通过 myNode.Nodes.add(myChildNode);的语法加节点;但我是在vwd中编辑的,环境是asp.net2.0。用以上语法添加节点总是报错,编辑器也不能智能带出。请问在asp.net2.0中如何添加子节点?
      

  4.   

    思路基本没有问题,我现在主要的问题是:如何在TREEVIEW中添加子节点的问题?
      

  5.   

    忘了是在Web下编程
    在非顶级节点添加子节点用ChildNodes属性所以上面的代码更改为
     parentNode.ChildNodes.Add(myNode); 
      

  6.   

     
    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                 InitTree(TreeView1.Nodes, "0", username);
                }
            }
     protected void InitTree(TreeNodeCollection Nds, string parentMenuId)
            {
                
                DataView dv = new DataView();
                TreeNode tmpNode;
                   //从数据库取出数据
                dv.Table = Convertdrtodt(myDS); 
                dv.RowFilter = "ParentID=" + "'" + parentMenuId + "'";
                foreach (DataRowView drv in dv)
                {
                    tmpNode = new TreeNode();
                    //菜单ID
                    tmpNode.Value = drv["MenuID"].ToString();
                    //结点名称
                    tmpNode.Text = drv["MenuName"].ToString();
                   //结点处于合并状态
                    tmpNode.Expanded = false;
                    //增加结点
                    Nds.Add(tmpNode);
                    //递归调用,绑定下级菜单
                    InitTree(tmpNode.ChildNodes, tmpNode.Value);
                }
            }你可以试试
      

  7.   

    终于搞定了,非常感谢houdejun214兄弟的支持。也感谢大雄兄弟支持。