jsp怎么实现批量删除
2018-01-16 · 知道合伙人互联网行家
关注
展开全部
步骤一:在jsp页面中,用jquery获取到对象的ID
<tr align="center" bgcolor="#FAFAF1" height="22">
<th width="4%"><input name="selectall" type="checkbox" id="selectall" value="101" class="np">全选</th>
<th width="6%">作业名称</th>
<th width="20%">作业简介</th>
<th width="10%">作业成绩</th>
<th width="10%">作业上传时间</th>
<th width="10%">提交人</th>
<th width="6%">操作</th></tr><s:iterator value="#session.allStaskpageResultSet.list" id="stask">
<!-- select stask.num,
stask.name as staskName,
stask.content,
stask.grade,
stask.uploadtime,
student.name as studentName --><tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="50" >
<td><input name="atask" type="checkbox" id="ask" value="<s:property value="#stask[0]" />" class="np"></td>
<td><s:property value="#stask[1]" /></td>
<td><s:property value="#stask[2]" /></td>
<td><s:property value="#stask[3]" /></td>
<td><s:date name="#stask[4]" format="yyyy-MM-dd"/></td>
<td><s:property value="#stask[5]" /></td>
<td><a href="#" onclick="check()">删除</a></td></tr></s:iterator>12345678910111213141516171819202122232425262728
这里是用struts2标签,对数据进行迭代的输出
jquery全选的代码:
$("#selectall").click(
function(){
if(this.checked){
$("input[name='atask']").each(function(){this.checked=true;});
}else{
$("input[name='atask']").each(function(){this.checked=false;});
}
}
);
});1234567891011
jquery点击删除按钮时,对ID的获取,并跳转到action:
function check() {
var msg = "您真的确定要删除吗?";
if (confirm(msg)==true){
var allcheckbox = ""; var becheckbox = "";
$("input[name=atask]").each(function(){ //遍历table里的全部checkbox
allcheckbox += $(this).val() + ","; //获取所有checkbox的值
if($(this).attr("checked")) //如果被选中
becheckbox += $(this).val() + ","; //获取被选中的值
}); if(becheckbox.length > 0) //如果获取到
becheckbox = becheckbox.substring(0, becheckbox.length - 1); //把最后一个逗号去掉
window.location = "astask_batch_delete.action?checkTnum="+becheckbox;
}else{
return false;
}
}12345678910111213141516171819
然后就是在action中,对数据进行接收:
private String checkTnum; public String getCheckTnum() { return checkTnum;
} public void setCheckTnum(String checkTnum) { this.checkTnum = checkTnum;
}12345678
批量删除的方法:
public String batch_delete(){
String [] checkedNums = checkTnum.split(",");
adminService.batchDeleteStask(checkedNums); return "batch_delete";
}12345
这是对接收到的ID进行处理,然后再调用Service层的批量删除方法:
@Transactional
public void batchDeleteAsk(String [] anums){
String hql = ""; for(int i=0;i<anums.length;i++) { if(i==0) {
hql = "anum="+anums[i];
} else {
hql =hql + " or anum="+anums[i];
}
}
hql= "delete from Ask where "+hql;
adminDao.batchDelete(hql,anums);
}12345678910111213
这是进行hql查询语句的拼凑,先判断长度,当ID就只有一个的时候,就删除一个,当多个时,就可以删除多个,可以在后台看hibernate输出的查询语句,是用or来连接各个ID的条件的
下面,在admin接口中定义了批量删除的方法
//批量删除留言
public void batchDelete(final String hql,String[] anums);12
下面是实现数据库的语句
@Override
public void batchDelete(String hql,String[] anums) {
Session session=sessionFactory.getCurrentSession();
Query query=session.createQuery(hql);
query.executeUpdate();
}1234567
这里,也可以用JDBC的本地语句来实现,到这里,就已经基本完成这个功能了,粗略的思路就是这样。
<tr align="center" bgcolor="#FAFAF1" height="22">
<th width="4%"><input name="selectall" type="checkbox" id="selectall" value="101" class="np">全选</th>
<th width="6%">作业名称</th>
<th width="20%">作业简介</th>
<th width="10%">作业成绩</th>
<th width="10%">作业上传时间</th>
<th width="10%">提交人</th>
<th width="6%">操作</th></tr><s:iterator value="#session.allStaskpageResultSet.list" id="stask">
<!-- select stask.num,
stask.name as staskName,
stask.content,
stask.grade,
stask.uploadtime,
student.name as studentName --><tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="50" >
<td><input name="atask" type="checkbox" id="ask" value="<s:property value="#stask[0]" />" class="np"></td>
<td><s:property value="#stask[1]" /></td>
<td><s:property value="#stask[2]" /></td>
<td><s:property value="#stask[3]" /></td>
<td><s:date name="#stask[4]" format="yyyy-MM-dd"/></td>
<td><s:property value="#stask[5]" /></td>
<td><a href="#" onclick="check()">删除</a></td></tr></s:iterator>12345678910111213141516171819202122232425262728
这里是用struts2标签,对数据进行迭代的输出
jquery全选的代码:
$("#selectall").click(
function(){
if(this.checked){
$("input[name='atask']").each(function(){this.checked=true;});
}else{
$("input[name='atask']").each(function(){this.checked=false;});
}
}
);
});1234567891011
jquery点击删除按钮时,对ID的获取,并跳转到action:
function check() {
var msg = "您真的确定要删除吗?";
if (confirm(msg)==true){
var allcheckbox = ""; var becheckbox = "";
$("input[name=atask]").each(function(){ //遍历table里的全部checkbox
allcheckbox += $(this).val() + ","; //获取所有checkbox的值
if($(this).attr("checked")) //如果被选中
becheckbox += $(this).val() + ","; //获取被选中的值
}); if(becheckbox.length > 0) //如果获取到
becheckbox = becheckbox.substring(0, becheckbox.length - 1); //把最后一个逗号去掉
window.location = "astask_batch_delete.action?checkTnum="+becheckbox;
}else{
return false;
}
}12345678910111213141516171819
然后就是在action中,对数据进行接收:
private String checkTnum; public String getCheckTnum() { return checkTnum;
} public void setCheckTnum(String checkTnum) { this.checkTnum = checkTnum;
}12345678
批量删除的方法:
public String batch_delete(){
String [] checkedNums = checkTnum.split(",");
adminService.batchDeleteStask(checkedNums); return "batch_delete";
}12345
这是对接收到的ID进行处理,然后再调用Service层的批量删除方法:
@Transactional
public void batchDeleteAsk(String [] anums){
String hql = ""; for(int i=0;i<anums.length;i++) { if(i==0) {
hql = "anum="+anums[i];
} else {
hql =hql + " or anum="+anums[i];
}
}
hql= "delete from Ask where "+hql;
adminDao.batchDelete(hql,anums);
}12345678910111213
这是进行hql查询语句的拼凑,先判断长度,当ID就只有一个的时候,就删除一个,当多个时,就可以删除多个,可以在后台看hibernate输出的查询语句,是用or来连接各个ID的条件的
下面,在admin接口中定义了批量删除的方法
//批量删除留言
public void batchDelete(final String hql,String[] anums);12
下面是实现数据库的语句
@Override
public void batchDelete(String hql,String[] anums) {
Session session=sessionFactory.getCurrentSession();
Query query=session.createQuery(hql);
query.executeUpdate();
}1234567
这里,也可以用JDBC的本地语句来实现,到这里,就已经基本完成这个功能了,粗略的思路就是这样。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询