JSP两个下拉列表框联动,都是数据库里的内容

当我选中前一个下拉列表的内容时,后一个自动显示相对应内容!

第1个回答  2009-04-14
这是一个三级级联的例子,我稍微加点注释,因为时间久了,我也看不懂了,呵呵.
得仔细看..
这里格式很乱,如果如要,hi我,给你发jsp文件过去.

//级联下拉框
//定义三个数据存放数据,页面初始化装入数据.同时初始化第一个下拉框
var lv1 = [];
var lv2 = [];
var lv3 = [];
var cc = 0;
var c=0;
<% for (int k=0;k<hlm.size();k++){
MBeanCatRes ar =(MBeanCatRes)hlm.get(k);
%>
lv1[<%=k%>]=['<%=ar.getAttrName()%>','<%=ar.getAttrDisplayName()%>','<%=ar.getAttrType()%>'];
<%
List xm = (List) ar.getFields();
for (int m=0;m<xm.size();m++){
MBeanAttr arr = (MBeanAttr)xm.get(m);

%>
lv2[cc]=['<%=arr.getAttrName()%>','<%=arr.getFieldName()%>','<%=arr.getFieldDisplayName()%>','<%=arr.getFieldType()%>'];
cc=cc+1;
<%}
List xmm = (List) ar.getKeycols();
for (int n=0;n<xmm.size();n++){
MBeanAttrKeycols ark = (MBeanAttrKeycols)xmm.get(n);
%>
lv3[c]=['<%=ar.getAttrName()%>','<%=ark.getKeyColsValue()%>','<%=ark.getKeyColsDisplayName()%>'];
c=c+1;

<%}}%>

//下面的几个toselect函数是某个列表改动的时候,调用,从上面数组中取值,动态改变相应的下拉框.改变下拉框最主要的就是remove掉数据,然后用new Option 新建新的值.

function toselect(){
len=document.form1.fieldname.options.length;
for(i=len-1;i>0;i--)
{
document.form1.fieldname.remove(i);
}
len=document.form1.keyname.options.length;
for(i=len;i>0;i--)
{
document.form1.keyname.remove(i);
}
var thistype = document.form1.attname.value;
var count = lv2.length;
var ccc = 1;
for (k=0;k<count;k++){
if (lv2[k][0]==thistype){
document.form1.fieldname.options[ccc] = new Option(lv2[k][2],lv2[k][1]);
ccc=ccc+1;
}
}
count = lv3.length;
ccc=0;
for (k=0;k<count;k++){
if (lv3[k][0]==thistype){
document.form1.keyname.options[ccc] = new Option(lv3[k][2],lv3[k][1]);
ccc=ccc+1;
}
}
//其他参数赋值.
var ia = lv1.length;
for (k=0;k<ia;k++){
if (lv1[k][0]==thistype){
//alert(lv1[k][1]+lv1[k][2]);
document.form1.displayattname.value = lv1[k][1];
document.form1.atttype.value = lv1[k][2];

}
}
toselect3();
}
function toselect2(){
var thistype = document.form1.fieldname.value;
var ptype = document.form1.attname.value;
//alert(thistype);
var ia = lv2.length;
for (k=0;k<ia;k++){
if (lv2[k][1]==thistype && lv2[k][0]==ptype){
//alert(lv2[k][2]+lv2[k][3]);
document.form1.displayfieldname.value = lv2[k][2];
document.form1.fieldtype.value = lv2[k][3];

}
}
}
function toselect3(){
var thistype = document.form1.keyname.value;
var ptype = document.form1.attname.value;
//alert(thistype);
var ia = lv3.length;
for (k=0;k<ia;k++){
if (lv3[k][1]==thistype && lv3[k][0]==ptype){
//alert(lv3[k][2]+lv3[k][3]);
document.form1.displaykeyname.value = lv3[k][2];

}
}
}
相似回答
大家正在搜