ssh框架下checkbox翻页选中问题

思路:

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()%>" οnclick="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" οnclick="changeCheck('task<%=i%>');" >    若checkstate字段为true,已被勾选,checked属性设为"checked" 
<%}else{ %>
<input type="checkbox" name="tasks" id="task<%=i%>" value="<%=planTask.getId()%>" οnclick="changeCheck('task<%=i%>');" >
<%} %>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值