日期:2014-05-18  浏览次数:20733 次

多表做一个树形菜单,帮忙解决下 在线等....
stand表(工点表)
字段:standID       standName

sort表(文件分类表)
字段:sortID       sortName

file表(文件分类下的具体文件表)
字段:fileID       fileName     sortID       standID


三层菜单:
工点A
          ---文件分类A
                                  ---具体文件A
          ---文件分类B          
                                  ---具体文件B
                                  ---具体文件C
工点B
          ----文件分类A
                                  ---具体文件D
          ----文件分类B
                                  ---具体文件E
工点C
          ----文件分类A
                                  ---具体文件F
          ----文件分类B
                                  ---具体文件G


帮忙看下,这三张表怎么弄成树形菜单。
顺便说一下,我以前做的树形菜单的数据都是放一张表里面的,取出来在JSP页面调用一个
js文件里面的   add( "ID ", "父类ID ", "名称 ")就OK了    
现在是三张表,不知道怎么搞...哪位帮忙解决下

------解决方案--------------------
不缺的,我知道了。

fileID fileName sortID standID 这里的sortID --> standID.
所以当你向树里添加 文件分类表(sort,有一个sortId) 的时候,
你在 具体文件表 查找一个sortId和他相同的文件,这个文件的standId就是文件分类表(sort)的头,也就是父类ID。有了父类id就可以添加到树里了。


添加文件有直接的父类ID
------解决方案--------------------
可以试试三个方法

1、用递归sql语句,但是不是所有的数据库都支持递归sql语句的,已知DB2是可以的
2、分别取出三个表数据,程序处理来整合他们的父子关系,放到一个集合里
3、做成ajax菜单,先显示第一层菜单,点击之后显示这个节点的下一层菜单
------解决方案--------------------
以前的老帖,供参考
http://community.csdn.net/Expert/topic/5524/5524253.xml?temp=.3242151
我的blog里的一篇关于树形结构的文章,供参考
http://blog.csdn.net/daniel_kaka/archive/2007/05/16/1611914.aspx

------解决方案--------------------
首先明确一点:工点有几个,那么树的第一层节点就有几个。

好,来看第二层数据,如果分类中有数据,才显示该节点,还是没有数据,就不显示该节点。如果不管有没有数据,都显示出所有的分类,那更简单。这里假设显示出所有分类

好,得到工点的数据,比如ArrayList arrG。得到分类的数据,比如ArrayList arrS。得到文件数据,比如ArrayList arrF。另外定义一个填充树节点的数据集ArrayList arrData,里面放javabean,例如TreeData,字段三个id ,parentId,name。

循环(arrG)
{
arrData.add(第一层节点);
循环(arrS)
{
arrData.add(第二层节点);//注意TreeData的parentId为工点号
循环(arrF)
{
判断(是否属于这个工点和分类)
{
arrData.add(第三层节点);//注意TreeData的parentId为工点号+分类号
}
}
}
}