id Parentid name
1   0       aaaa
2   1       bbbb
3   1       cccc
4   2       dddd
5   2       dddd
6   4       dddd这是一个树结构,我点击根结点1,怎么得到下面所有的子结点?把点击的根结点下所有子结点放到一个数组里。

解决方案 »

  1.   

    在做树型的是吧.. private void Page_Load(object sender, System.EventArgs e)
    { Conn=new SqlConnection(com.connstr);
     //new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connstr"]);
    if(!Page.IsPostBack)
    {
    CreateDataSet();
    InitTree(tvMenu.Nodes,"0");

    }
     
    //建立数据集
    private DataSet CreateDataSet()
    {
    cmdSelect="select * from T_Dpt";
    myCmd=new SqlDataAdapter(cmdSelect,Conn);
    ds=new DataSet();
    myCmd.Fill(ds,"tree");
    return ds;
    }
    //建树的基本思路是:从根节点开始递归调用显示子树 
    private void InitTree(TreeNodeCollection Nds,string ParentDpt)
    {
    DataView dv=new DataView();
    TreeNode tmpNd;
    string intId;
    dv.Table=ds.Tables["tree"];
    dv.RowFilter="ParentDpt='" + ParentDpt +"'" ;
    foreach(DataRowView drv in dv)
    {
    tmpNd=new TreeNode();
    tmpNd.ID=drv["DptNo"].ToString();
    //tmpNd.Text=drv["DptName"].ToString();
    tmpNd.Text="<div onclick='test(this.innerText)'>"+drv["DptName"].ToString()+"</div>";//添加单击事件
    tmpNd.Expanded=true;
    tmpNd.ImageUrl="Images/"+"folder.gif";//drv["Icon"].ToString();
    //tmpNd.NavigateUrl="../"+drv["Address"].ToString();

    Nds.Add(tmpNd);
    intId=drv["ParentDpt"].ToString();
    InitTree(tmpNd.Nodes,tmpNd.ID);

    }
    }
      

  2.   

    //递归添加树的节点 
        public void AddTree(int ParentID, TreeNode pNode)
        {
            DataSet ds = (DataSet)this.ViewState["ds"];
            DataView dvTree = new DataView(ds.Tables[0]);
            //过滤ParentID,得到当前的所有子节点 
            dvTree.RowFilter = "preid = " + ParentID;
        //    dvTree.Sort = "orderid asc";        foreach (DataRowView Row in dvTree)
            {
                TreeNode Node = new TreeNode();
                if (pNode == null)
                { //添加根节点                 Node.Value = "1";
                    Node.Text = Row["name"].ToString();
                    TreeView1.Nodes.Add(Node);
                   
                //    Node.Expanded = true;
                    AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归 
                }            else
                { //添加当前节点的子节点                   Node.Text = Row["name"].ToString();
                        pNode.ChildNodes.Add(Node);
                  //      Node.Expanded = true;
                                    AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归             }
            }    }
      

  3.   

    mengge(踏岸寻柳) 怎么遍历TreeNode啊?