我只有二级节点。根与节点        public DataTable getFather()
        {
            SqlConnection sqlconn = sqlFunction.getConnection();
            sqlconn.Open();
            DataSet _DataSet = new DataSet();
            string strSql = "select DepName from Department";
            SqlDataAdapter _SqlDataAdpater = new SqlDataAdapter(strSql, sqlconn);
            _SqlDataAdpater.Fill(_DataSet);
            return _DataSet.Tables[0];
        }
      public void bandroot()
        {
            DataTable dt = getFather();
            TreeNode mynode = new TreeNode();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                mynode = new TreeNode(dt.Rows[i]["DepName"].ToString());
                trvPositionList.Nodes.Add(mynode);            }
        }
以上代码可以直接获取根节点的代码
       public DataTable getChild(string N)
        {            SqlConnection sqlconn = sqlFunction.getConnection();
            sqlconn.Open();
            DataSet _DataSet = new DataSet();
            string strSql = "select P_Nubers,P_Name where depID=" + N;
            SqlDataAdapter _SqlDataAdapter = new SqlDataAdapter(strSql, sqlconn);
            _SqlDataAdapter.Fill(_DataSet);
            return _DataSet.Tables[0];
        }

这是我写的方法读取子节点的代码。请问我如何把根节点的传到这个方法里面来呢?

解决方案 »

  1.   

    private TreeNode GetNode(TreeNodeCollection Nodes, string value)  
      {  
      int i;  
      for(i=0;i <Nodes.Count;i++)  
      {  
      if(Nodes[i].Value==value)  
      {  
      return Nodes[i];  
      }  
      if(Nodes[i].ChildNodes.Count> 0)  
      {  
      return GetNode(Nodes[i].ChildNodes,value);  
      }  
      }  
      return null;  
      } 递归查询ChildNodes
      

  2.   

    方法有很多种。LZ可以用表连接全部查询出来,或者把根节点作为条件在执行一次查询,本人认为最好的方法是用LINQ,直接操作对象,看具体情况了 
      

  3.   

    先父节点,查询 ChildNodes,是否存在