单选框、复选框读取数据库
RT,怎么将前台的checkbox传到数据库,之后再从数据库读出数据,在前台显示之前选择的checkbox
一般都用什么方法来做?前台传到数据库里面时只能传是否勾选了该checkbox,因此在从数据库里面读出来显示在前台时要自己再放个checkbox吗?
------解决方案--------------------
前台复选框,要注意保证控件的名字(name属性)要一致。
这样接受时,直接就可以:String[] values = request.getParameterValues("name");
表单提交时,仅提交被复选的控件的值(value属性)
数据库一般也只会负责储存value值,所以JSP页面上的checkbox,需要自行处理。
------解决方案--------------------所有的checkbox都叫“hobby”,那么
String checkbox[] = request.getParameterValues("hobby");
String str = ",";
for(int i = 0;i<checkbox.length;i++){
str = str+",";
}
然后把str存到数据库里面;
取得时候就取出str字符串,然后以“,“分割,最后看有哪个爱好,,就在你页面上的那个爱好的checkbox的value后加上一个checked就ok了!!!
------解决方案--------------------楼主,思路基本上就和楼上各位说的差不多。具体的实现方式要根据你的代码来进行设计开发。
一般是在action中有两个list,一个list A存放的是原始的复选框的数据;另外一个list B存放的是已经被选中的复选框的数据。
将这两个list读取在页面上之后(A list的数据直接在页面显示;B list的数据用隐藏域的形式显示。),之后在进入页面的时候默认调用一个方法对这两个list的值进行获取,然后两个list进行比较。如果list中的值相等就checked=true;这样就可以在页面上选中了。
默认进入页面的一个方法:
Java code
function buttonChoose(){
//已经选择了的。
var buttonType = document.getElementsByName("buttonChoice");
//原始数据
var buttonTypeArr = document.getElementsByName("buttonTypeArr");
var id_allchannel = document.getElementById("id_allchannel");
for(var i = 0 ; i < buttonTypeArr.length ; i++){
for(var j = 0 ; j < buttonType.length ; j++){
if(buttonType[j].value == buttonTypeArr[i].value ){
buttonTypeArr[j].checked =true;
buttonTypeArr[j].disabled="disabled" ;
}
}
}
}