表的结构如:Id(int) PNodeId(int) MenuName(char)
1 0 一级菜单
2 1 菜单1
3 1 菜单2
4 1 菜单3
5 1 菜单4
6 1 菜单5
7 1 菜单6
8 1 菜单7
9 1 菜单8
10 1 菜单9
11 1 菜单10
12 1 菜单11
13 1 菜单12
14 2 菜单13
15 2 菜单14
16 2 菜单15
17 15 菜单16
18 15 菜单17我的思路是:根据id查找有多少PNodeId为1的数据,然后构建一级菜单,然后根据这些一级菜单所属的id号查找二级菜单(如第二条数据,id 为2,则查找 PNodeId为2的数据,再递归PNodeId为2的第一条记录,id为14,依次类推)建出来的树的应为:
一级菜单
|_菜单1
| |_菜单13
| |_菜单14
| | |_菜单16
| | |_菜单17
| |_菜单15
|_菜单2
|_菜单3
|_菜单4
|_菜单5
|_菜单6
|_菜单7
|_菜单8
|_菜单9
|_菜单10
|_菜单11
|_菜单12请大家帮帮我,急!!
1 0 一级菜单
2 1 菜单1
3 1 菜单2
4 1 菜单3
5 1 菜单4
6 1 菜单5
7 1 菜单6
8 1 菜单7
9 1 菜单8
10 1 菜单9
11 1 菜单10
12 1 菜单11
13 1 菜单12
14 2 菜单13
15 2 菜单14
16 2 菜单15
17 15 菜单16
18 15 菜单17我的思路是:根据id查找有多少PNodeId为1的数据,然后构建一级菜单,然后根据这些一级菜单所属的id号查找二级菜单(如第二条数据,id 为2,则查找 PNodeId为2的数据,再递归PNodeId为2的第一条记录,id为14,依次类推)建出来的树的应为:
一级菜单
|_菜单1
| |_菜单13
| |_菜单14
| | |_菜单16
| | |_菜单17
| |_菜单15
|_菜单2
|_菜单3
|_菜单4
|_菜单5
|_菜单6
|_菜单7
|_菜单8
|_菜单9
|_菜单10
|_菜单11
|_菜单12请大家帮帮我,急!!
取出菜单几的那个几,这个只要按字符就可以了
取出来之后SELECT下,在添加下就好了啊如果一开始就知道菜单数不会超过多少的话
就直接遍历下PNodeId,从第一个记录开始一个节点一个节点的添加啊
记得在次之前PNodeId要按大小排下序就可以了
for(i=1,i<=已知值,i++)
{ s:='菜单'+inttostr(i);
if i=1 then 直接添加在根目录下;
if i>1 then 添加成以S为父目录的子目录;(具体添加函数忘记了,不好意思)
}
你用TreeView做展现吧?TreeNode的Tag可以用来记当前节点的ID。
建议你第一次只建第一层节点,当点到某个节点的时候再用select * from 表 where PNodeID = Tag语句判断它是否有子节点,然后再打开。一次性建好所有节点是不科学D,速度慢且没必要。