能否帮我写个
表结构
ID PID NAME
1 0 AAA
2 1 BBB
3 1 CCC
4 2 DDD
5 2 EEE
6 3 FFF
7 4 GGG
8 4 HHH
这样的一个游标,我想获取每个节点下面有几个子节点,比如pid为1的有2个,pid为2的有2个,pid为3的1个

解决方案 »

  1.   

     DataTable dtlModel = new DataTable();
            private void CreateData() {
                dtlModel.Columns.Add("id", typeof(Int32));
                dtlModel.Columns.Add("pid", typeof(Int32));
                dtlModel.Columns.Add("name");            for (int i = 1; i < 6; i++) {
                    DataRow dr = dtlModel.NewRow();
                    dr["id"] = i;
                    dr["pid"] = 0;
                    dr["name"] = i.ToString();
                    dtlModel.Rows.Add(dr);
                    for (int j = 1; j < 6; j++) {
                        DataRow dr1 = dtlModel.NewRow();
                        dr1["id"] = int.Parse(i.ToString() + j.ToString());
                        dr1["pid"] = i;
                        dr1["name"] = i + "_" + j;
                        dtlModel.Rows.Add(dr1);
                        for (int k = 1; k < 6; k++) {
                            DataRow dr2 = dtlModel.NewRow();
                            dr2["id"] = int.Parse(i.ToString() + j.ToString() + k.ToString());
                            dr2["pid"] = dr1["id"];
                            dr2["name"] = i + "_" + j + "_" + k;
                            dtlModel.Rows.Add(dr2);
                        }
                    }
                }
            }        private void BindTree(DataRow[] rows, TreeNode node) {
                foreach (DataRow r in rows) {
                    if (r["pid"] == DBNull.Value)
                        continue;                //如果是根结点,添加到TreeView控件
                    if (r["pid"].ToString() == "0") {
                        TreeNode node1 = new TreeNode();
                        node1.Text = string.Format("<input name='hd_{0}' type='hidden' value='{1}'/>{2}", r["id"], r["id"], r["name"].ToString());
                        node1.Value = r["id"].ToString();
                        
                        //node1.Target = "top";
                        TreeView1.Nodes.Add(node1);
                        BindTree(dtlModel.Select("pid=" + r["id"]), node1);
                    }
                    else if (node != null) {//否则添加到当前结点
                        TreeNode node1 = new TreeNode();
                        node1.Text = string.Format("<input name='hd_{0}' type='hidden' value='{1}'/>{2}", r["id"], r["id"], r["name"].ToString());
                        node1.Value = r["id"].ToString();
                        //node1.Target = "top";
                        node.ChildNodes.Add(node1);
                        BindTree(dtlModel.Select("pid=" + r["id"]), node1);//递归生成子树
                    }
                }
            }
      

  2.   

    node.childnodes()
    大概,估计可以获取吧
      

  3.   

    哥们儿要在程序里 还是SQL里获取
      

  4.   

    用递归假如你的 表名 对应实体是  table1, 你的第一节 父id=0;你写个查询  对应父id下的子节点。 比如方法:  List<table1> Getsubidbypid(int pid)得到 List<table1>  tblist,然后 count一下。