能否帮我写个
表结构
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个
表结构
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个
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);//递归生成子树
}
}
}
大概,估计可以获取吧