现在我用递归遍历所有的子节点,用arraylist装回去得,
现在怎么像个办法把所有得子节点,用函数返回值装呢
如:string arr =   getChild("132");
就能返回所有得节点呢
 ArrayList al = new ArrayList();
        protected void Page_Load(object sender, EventArgs e)
        {
            getChild("132");
            foreach (string temp in al)
            {
                Response.Write(temp+"<br>");
            }
        }
        public void getChild(string pid)
        {
            DataTable dt = DbHelperOleDb.Query("select * from [zone] where [parentid]="+pid).Tables[0];
            for(int i=0;i<dt.Rows.Count;i++)
            {
                 DataTable dts = DbHelperOleDb.Query("select * from [zone] where [parentid]="+Convert.ToString(dt.Rows[i]["classid"]??"-100")).Tables[0];
                if(dts.Rows.Count>0)
                {
                    getChild(Convert.ToString(dts.Rows[0]["classid"]??"-100"));
                }
                else
                {
                    al.Add(Convert.ToString(dt.Rows[i]["classid"]??"-100"));
                }
            }
        }

解决方案 »

  1.   

     ArrayList al = new ArrayList(); 
            protected void Page_Load(object sender, EventArgs e) 
            { 
                getChild("132");           //执行完getChild("132")之后 ArrayList 对象 al已经就有值了
                foreach (string temp in al) 
                { 
                    Response.Write(temp+" <br> "); 
                } 
            } 
            public void getChild(string pid) 
            { 
                DataTable dt = DbHelperOleDb.Query("select * from [zone] where [parentid]="+pid).Tables[0]; 
                for(int i=0;i <dt.Rows.Count;i++) 
                { 
                     DataTable dts = DbHelperOleDb.Query("select * from [zone] where [parentid]="+Convert.ToString(dt.Rows[i]["classid"]??"-100")).Tables[0]; 
                    if(dts.Rows.Count> 0) 
                    { 
                        getChild(Convert.ToString(dts.Rows[0]["classid"]??"-100")); 
                    } 
                    else 
                    { 
                        al.Add(Convert.ToString(dt.Rows[i]["classid"]??"-100")); 
                    } 
                } 
            }
      

  2.   

     或者
    public ArrayList getChild(string pid) 
            { 
                DataTable dt = DbHelperOleDb.Query("select * from [zone] where [parentid]="+pid).Tables[0]; 
                for(int i=0;i <dt.Rows.Count;i++) 
                { 
                     DataTable dts = DbHelperOleDb.Query("select * from [zone] where [parentid]="+Convert.ToString(dt.Rows[i]["classid"]??"-100")).Tables[0]; 
                    if(dts.Rows.Count> 0) 
                    { 
                        getChild(Convert.ToString(dts.Rows[0]["classid"]??"-100")); 
                    } 
                    else 
                    { 
                        al.Add(Convert.ToString(dt.Rows[i]["classid"]??"-100")); 
                    } 
                } 
                 return al;
            }
      

  3.   

    试试:用一个HashTable装,key为父节点,value为对应父节点的所有子节点(ArrayList)