本人想在一个下拉式菜单中有1000多项数据让客户选择,该数据应如何传输,在客户退出应用程序前保留着,如何更新? 你这1000项数据是否是存储在数据库中,如果是数据库中的数据,在jsp或servlet中做个循环就可以了。不知道楼主的意思是不是这个 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是不是想尽管是有页面迁移也不需要每次都取这1000个人的信息,只想去一次。假如你这1000个人在你也操作的过程中没有变化,你页面可以用iframe的形式,一个画面专门存这1000个人。假如你就是一个画面,你就在jsp或servlet中做个循环就可以了。 1000多项的数据选择,很正常。不过你需要对你的下拉筐做一个索引,用于操作者的快速选择。不知道你想用什么实现?如果用java实现,很好半,用script的话,保存起来比较麻烦。 这下拉框是客户查询表单中的一控件,不能另开新窗口,我的程序是jsp+bean+mysql,但不知怎样实现好? 我还是主张你不必这样麻烦,每个页面SELECT一下就可以。如果你的数据库联接使用了高效的联接池,那是最好。对于1000多项数据做SELECT,时间在ms级,不会引起你整个系统的效率的,不要为这点去在页面间传递这么多数据(1000多项对于数据库不直一提,但对于WEB间传递可就显的多了) 1000多项根本不需要传递的.你也可以看看hotmail发邮件--收件人选择的做法。不过1000多项数据肯定要做归类的 企业内部应用1000多项是正常的。用applet实现。 用application来保存数据,当更新数据时进行同步更新application中数据 easydozer(easydozer)您好,能不能说得详细点,在这点技术上,没有先例,大家都看着. 你应该请一个不错的JSP程序员,这样您有什么问题都可以让他给你解决了 他的意思是让你一次取成全局的数据,每个客户共享!这样的BEAN只要取一次就可以了!然后把数据放到全局的ArrayList里!要是让用户选择的话,还是做TREE吧 在页面中下拉中列出如此多的内容是不符合操作习惯的,所以应该:将数据分类显示or将数据连动显示or要求客户更改需求 这么多阿?如果你的选项有个层次关系,建议多几个下拉框比如第一个:选择国家----第二个:列出所选国家的省份或第一级行政单位---第三个:列出身份的城市阿什么的...以此类推没有呢就做个查询给它吧,1000个肯定不会有人用的。数据的获取呢数据库查询,xml,文件下载到客户端然后再读取数据 哥们,超过100条的记录用下拉select控件就已经看着很不方便了。完全可以重开一个窗口,在这个新窗口中进行记录的检索和选取(只要将list控件设成单选即可),将这个窗口的值返回到其父窗口。对于是否每次都重新取数据的问题,每次都从数据库中取1000多条记录根本就耗费不了多少时间,而且可以及时的将数库中信息的改变体现出来;一定要保存的话,将查询到的信息放到一个生命周期为"application"的数据容器bean中即可。给你一个开新窗口并将新窗口的数据返回到父窗口的脚本:function addRepaEmployeeList( sList ,id){ var cVal, oSel ,roleId; cVal = document.forms[0].tempHidden; oSel = sList; roleId = id ; var updated = document.forms[0].updated.value; if (updated == "false") { popup( "/public/util/AviGrantDlg.jsp?roleId="+roleId ); return true; } if( cVal.value != "" ) { var arrVal = cVal.value.split("!!"); for(var i=0; i < arrVal.length; i++ ) { var arrItems = arrVal[i].split("^^"); var j = sList.options.length - 1; for (; j >= 0; j-- ) { if ( arrItems[1] == sList.item(j).value ) { break; } } if ( j < 0 ) { var newOpt = new Option( arrItems[0], arrItems[1] ); oSel.options[oSel.options.length] = newOpt; } } } document.forms[0].updated.value = "false"; document.forms[0].tempHidden.value = ""; return true;}function addRepaDeptEmployeeList( sList ,id){ var cVal, oSel ,roleId; cVal = document.forms[0].tempHidden; oSel = sList; roleId = id ; var updated = document.forms[0].updated.value; if (updated == "false") { popup( "/public/util/AviDeptGrantDlg.jsp?roleId="+roleId ); return true; } if( cVal.value != "" ) { var arrVal = cVal.value.split("!!"); for(var i=0; i < arrVal.length; i++ ) { var arrItems = arrVal[i].split("^^"); var j = sList.options.length - 1; for (; j >= 0; j-- ) { if ( arrItems[1] == sList.item(j).value ) { break; } } if ( j < 0 ) { var newOpt = new Option( arrItems[0], arrItems[1] ); oSel.options[oSel.options.length] = newOpt; } } } document.forms[0].updated.value = "false"; document.forms[0].tempHidden.value = ""; return true;}function popup( URL1 ){ var url2 = ""; window.open(URL1,"subWin","height=500,width=500,resizable=no,status=yes,scrollbars=yes,toolbar=no,menubar=no,location=yes");} 在父窗口中如下定义select控件<select name="seleccustom" size="5" multiple class="selectdlg"> </select> <input type="hidden" name="tempHidden" size="10" maxlength="10" value=""> <input type="hidden" name="updated" size="10" maxlength="10" value="false">再定义两个按钮,例如下面的图片按钮<img src="/img/search.gif" width="94" height="19" name="Submit1" border="0" onClick="javascript:addRepaEmployeeList(seleccustom,'<%=request.getParameter("roleId")%>')"> <img src="/img/del-index.gif" width="94" height="19" name="Sub0" border="0" onClick="delSelOpts(seleccustom)">在新开的窗口中如下定义select控件:<select name="selectableIDList"...这里设为单选>并定义返回按钮:<input type="button" value="选择" name="button" class="button2" onClick="javascript:rtnValue(this.form)" >即可function rtnValue( myform, tObj ){ var superList= tObj; var j; var mySel = myform.selectableIDList; var delim = ""; var selV = ""; for ( i = 0; i < mySel.options.length; i++ ) { if ( mySel.options[i].selected == true ) { var vlu = mySel.options[i].value; var txt = mySel.options[i].text; selV += delim + txt + "^^" + vlu; delim = "!!"; newOpt = new Option( txt, vlu ); } } top.opener.document.all("tempHidden").value = selV; top.opener.document.all("updated").value = "true"; top.opener.document.forms[0].Submit1.click(); window.close(); return true;} 删除父窗口中已选择的选项脚本例子:function delSelOpts( mSelObj ){ for( var i = 0; i < mSelObj.options.length; i++ ) { var oriLen = mSelObj.options.length; if ( mSelObj.options[i].selected ) { mSelObj.options[i] = null; if(i < oriLen-1) i--; } }} JS方法内取的值是false,给方法传递的值却是正确的,请高手指教。 Struts2 找不到action 是怎么回事呀??麻烦各位大侠帮忙看看了。 网站挂到外网上的问题 请师傅一名!jsp学习,本人原来是搞asp开发的!顶者有分! git工具的使用 散分 哪位大虾提供JBulider7.0 的serial number和key?谢谢 100分高分请教tomcat启动是出错 关于虚拟主机的问题,请大家看看 新手求帮助。。。 谁知道win2003的下载网址(不好意思就剩70分了)? 在JSP中怎么才能实现每隔5秒向库中取一次数据?在线等待!!
假如你这1000个人在你也操作的过程中没有变化,你页面可以用iframe的形式,一个画面专门存这1000个人。
假如你就是一个画面,你就在jsp或servlet中做个循环就可以了。
不过你需要对你的下拉筐做一个索引,用于操作者的快速选择。不知道你想用什么实现?如果用java实现,很好半,用script的话,保存起来比较麻烦。
用applet实现。
将数据分类显示
or
将数据连动显示
or
要求客户更改需求
如果你的选项有个层次关系,建议多几个下拉框比如
第一个:选择国家----
第二个:列出所选国家的省份或第一级行政单位---
第三个:列出身份的城市阿什么的
...以此类推
没有呢就做个查询给它吧,1000个肯定不会有人用的。
数据的获取呢数据库查询,xml,文件下载到客户端然后再读取数据
对于是否每次都重新取数据的问题,每次都从数据库中取1000多条记录根本就耗费不了多少时间,而且可以及时的将数库中信息的改变体现出来;一定要保存的话,将查询到的信息放到一个生命周期为"application"的数据容器bean中即可。给你一个开新窗口并将新窗口的数据返回到父窗口的脚本:
function addRepaEmployeeList( sList ,id)
{
var cVal, oSel ,roleId; cVal = document.forms[0].tempHidden; oSel = sList; roleId = id ; var updated = document.forms[0].updated.value; if (updated == "false")
{
popup( "/public/util/AviGrantDlg.jsp?roleId="+roleId );
return true;
} if( cVal.value != "" )
{
var arrVal = cVal.value.split("!!"); for(var i=0; i < arrVal.length; i++ )
{
var arrItems = arrVal[i].split("^^"); var j = sList.options.length - 1;
for (; j >= 0; j-- )
{
if ( arrItems[1] == sList.item(j).value )
{
break;
}
}
if ( j < 0 )
{
var newOpt = new Option( arrItems[0], arrItems[1] );
oSel.options[oSel.options.length] = newOpt;
}
}
}
document.forms[0].updated.value = "false";
document.forms[0].tempHidden.value = "";
return true;
}function addRepaDeptEmployeeList( sList ,id)
{
var cVal, oSel ,roleId; cVal = document.forms[0].tempHidden; oSel = sList; roleId = id ; var updated = document.forms[0].updated.value; if (updated == "false")
{
popup( "/public/util/AviDeptGrantDlg.jsp?roleId="+roleId );
return true;
} if( cVal.value != "" )
{
var arrVal = cVal.value.split("!!"); for(var i=0; i < arrVal.length; i++ )
{
var arrItems = arrVal[i].split("^^"); var j = sList.options.length - 1;
for (; j >= 0; j-- )
{
if ( arrItems[1] == sList.item(j).value )
{
break;
}
}
if ( j < 0 )
{
var newOpt = new Option( arrItems[0], arrItems[1] );
oSel.options[oSel.options.length] = newOpt;
}
}
}
document.forms[0].updated.value = "false";
document.forms[0].tempHidden.value = "";
return true;
}function popup( URL1 )
{
var url2 = "";
window.open(URL1,"subWin","height=500,width=500,resizable=no,status=yes,scrollbars=yes,toolbar=no,menubar=no,location=yes");
}
<select name="seleccustom" size="5" multiple class="selectdlg">
</select>
<input type="hidden" name="tempHidden" size="10" maxlength="10" value="">
<input type="hidden" name="updated" size="10" maxlength="10" value="false">
再定义两个按钮,例如下面的图片按钮
<img src="/img/search.gif" width="94" height="19" name="Submit1" border="0" onClick="javascript:addRepaEmployeeList(seleccustom,'<%=request.getParameter("roleId")%>')">
<img src="/img/del-index.gif" width="94" height="19" name="Sub0" border="0" onClick="delSelOpts(seleccustom)">在新开的窗口中如下定义select控件:
<select name="selectableIDList"...这里设为单选>
并定义返回按钮:
<input type="button" value="选择" name="button" class="button2" onClick="javascript:rtnValue(this.form)" >即可function rtnValue( myform, tObj )
{
var superList= tObj;
var j; var mySel = myform.selectableIDList;
var delim = "";
var selV = "";
for ( i = 0; i < mySel.options.length; i++ )
{
if ( mySel.options[i].selected == true )
{
var vlu = mySel.options[i].value;
var txt = mySel.options[i].text;
selV += delim + txt + "^^" + vlu;
delim = "!!";
newOpt = new Option( txt, vlu );
}
}
top.opener.document.all("tempHidden").value = selV;
top.opener.document.all("updated").value = "true";
top.opener.document.forms[0].Submit1.click();
window.close();
return true;
}
function delSelOpts( mSelObj )
{
for( var i = 0; i < mSelObj.options.length; i++ )
{
var oriLen = mSelObj.options.length;
if ( mSelObj.options[i].selected )
{
mSelObj.options[i] = null;
if(i < oriLen-1) i--;
}
}
}