在JSP如何实现二级连动,我有两个表。一个是部门表,一个是档案表(档案表里面只存储部门表的ID)。

来源:百度知道 编辑:UC知道 时间:2024/06/09 00:43:47
在JSP如何实现二级连动,我有两个表。一个是部门表,一个是档案表(档案表里面只存储部门表的ID)。我建2个<SELECT>在第一个里面显示部门名称。第二个自动查询出档案里面这个部门下的所有职员
例如:
第一步先在第一个<SELECT>里面选择一个部门
第二个里面就显示相应这个部门下的职员
初学者请大家仔细一点讲解好吗!!!!谢谢大虾

这个不好做,现实中二级联动<SELECT>通常要求父组件和子组件中的对象都是固定的,在数据更改频繁的情况下,采用这种方式来做不明智。至少我是这么觉得。
不过我还是想了会,其实也能实现,没有什么事是程序做不到的。不过我的步骤比较麻烦(只说思想,供参考,我估计现实中程序没有这么写的,太耗费资源):
先把部门中的集合取出放入session或request中,待页面时遍历到父的<SELECT>中,期间每得到一个相应的部门id,再根据id遍历出另一个表中对应员工的集合。

看起来像是双重循环,但是因为<SELECT>组件是死的,不能自行判断对象值,需要我们自己来写控制,这时需要用到javascript来控制父子组件之间的关系.

部门集合放入父的<SELECT>中没有问题,但接下来需要考虑几件事情:1.部门值变的情况下,子的<SELECT>的总长度x(10):如10个部门,需要变化。2.单个部门中的员工的长度发生变化的时候,x(1)="p1,p2,p3"的需要重写。

接下来做联动,把父的<SELECT> 中加入styleId="a" onchange="vbscript:test a,b"属性。子的<SELECT>中加入styleId="b"属性。只是a、b两个标记。

写一个javascript方法:
function test(a,b)
dim num,x1,i
num =a.selectedIndex
x1=split(x(num),",")
b.options.length=ubound(x1)+1
For i = 0 to ubound(x1)
b.options(i).text =x1(i)
b.options(i).value = x1(i)
next
end function

再来利用java输出一个文本(此文本是js文本),如下格式的:
&l