ssh框架下checkbox翻页选中问题

来源:互联网 发布:广告联盟挂机软件 编辑:程序博客网 时间:2024/05/18 03:10

思路:

1、在 form 中添加字段ids和checkstate字段,

 private java.lang.String ids;      
            private java.lang.Boolean checkstate;

将选中的id集合放在ids中,以逗号分隔;checkstate字段记录该条条目是否被选中

前端设置隐藏ids字段 <html:hidden property="ids"/>,用于与后端进行数据传递

2、点击checkbox该条记录被选中,再次点击取消选中

<input type="checkbox" name="tasks" id="task<%=i%>" value="<%=planTask.getId()%>" onclick="changeCheck('task<%=i%>');" >

js中changeCheck()方法如下:

function changeCheck(taski){
var checkbox=document.getElementById(taski);
var checkboxState=checkbox.checked;
var taskid=checkbox.value;
if(checkboxState==true){
document.getElementsByName("ids")[0].value+=taskid+",";    //被选中后向ids字段中添加该条任务的id
// alert(document.getElementsByName("ids")[0].value);
}else{
document.getElementsByName("ids")[0].value=document.getElementsByName("ids")[0].value.replace((taskid+","),"");
// alert(document.getElementsByName("ids")[0].value);//取消选中后将该条任务的id从ids中删除
};
}

3、返回上一页后,之前已经被选中的记录显示为勾选状态

在后端获取该页的所有记录后,将这些记录与ids字段中所有被勾选记录id集合相匹配,若某条记录在ids集合中,则设置该条记录的checkstate字段为true,在前端判断该字段,并根据该字段确定是否显示勾选状态

后端:

String ids=(String)request.getAttribute("ids");

String varryid[]=null;
if(!Util.strNull(ids).equals("")){varryid=ids.split(",");} //被勾选的id放在varryid[数组中

List<PlanTask> resultRows = PlanTaskManager.getTasksByConditonByPage(planTaskForm.getScore(),planTaskForm.getAttr1(),page.getCurrentStartOfPage(), page.getPageSize());             //获取该页的所有记录
if(varryid!=null && varryid.length>0){
for(int i=0;i<resultRows.size();i++){
for(int j=0;j<varryid.length;j++){
if( resultRows.get(i).getId().equals(varryid[j])){
    resultRows.get(i).setCheckstate(true);  //若该条记录已被勾选,设置checkstate字段为true
}
}
}
}

前端:

<%if(Util.strNull(planTask.getCheckstate()).equals("true")){ %>
<input type="checkbox" name="tasks" id="task<%=i%>" value="<%=planTask.getId()%>" checked="checked" onclick="changeCheck('task<%=i%>');" >    若checkstate字段为true,已被勾选,checked属性设为"checked" 
<%}else{ %>
<input type="checkbox" name="tasks" id="task<%=i%>" value="<%=planTask.getId()%>" onclick="changeCheck('task<%=i%>');" >
<%} %>

0 0
原创粉丝点击