skey sCaption sParentMenuCell
mainmenu 主菜单
manual 子菜单1 mainmenu
record 子菜单2 mainmenu
fax 子菜单3 mainmenu
hehe 子菜单1-1 manual
lala 子菜单1-1-1 hehe
caca 子菜单2-1 record这是数据库中的数据,最后在treeview控件中要显示
主菜单
- 子菜单1
- 子菜单1-1
- 子菜单1-1-1
-子菜单2
-子菜单2-1
-子菜单3
其中关系是skey和 sParentMenuCell建立的,如何实现啊
mainmenu 主菜单
manual 子菜单1 mainmenu
record 子菜单2 mainmenu
fax 子菜单3 mainmenu
hehe 子菜单1-1 manual
lala 子菜单1-1-1 hehe
caca 子菜单2-1 record这是数据库中的数据,最后在treeview控件中要显示
主菜单
- 子菜单1
- 子菜单1-1
- 子菜单1-1-1
-子菜单2
-子菜单2-1
-子菜单3
其中关系是skey和 sParentMenuCell建立的,如何实现啊
----------------
private void button3_Click(object sender, System.EventArgs e)
{ SqlConnection cnn=new SqlConnection("server=BEAR;user id=sa;initial catalog=123;persist security info=True;");
cnn.Open();
TreeNode node=new TreeNode();
treeView1.Nodes.Add(ShowAllTree(0,cnn,node)); //根节是以PID为0标志的 cnn.Close();
}private TreeNode ShowAllTree(int id,SqlConnection cnn,TreeNode node)
{ string sqlSelect = "SELECT id,pid FROM [1] where pid ='"+id+"'";
SqlDataAdapter da = new SqlDataAdapter(sqlSelect,cnn);
DataTable dt=new DataTable();
da.Fill(dt);
for(int i=0;i<dt.Rows.Count;i++)
{
TreeNode newNode=new TreeNode(dt.Rows[i][0].ToString());
node.Nodes.Add(newNode); int newID = (int)dt.Rows[i][0];; ShowAllTree(newID,cnn,newNode); //递归调用,将子结点ID当做下一当前结点ID }
dt.Dispose();
da.Dispose(); return node;
}测试数据表1:
id pid
1 0
2 1
3 2
4 3
5 1
6 0
7 0
8 6