我们在做很多项目的时候,总会要删除很多的数据,以前在删除数据的时候只会删除一个,而且在删除成功后跳转到的页面也是从第一页开始,所以感觉到一点都不舒服,总想试一次性的删除很多个数据,就是选中的数据,然后再跳转到删除的那个页面,这样的话效果要好得多,今天在学习和做通讯录的时候终于掌握了该方法,获得很大的收获。其中思路如下:
1.首先在显示信息页面添加一个操作烈,该列是一个复选框,可以支持多选,反选,清空的功能,该功能是用JavaScript进行控制,主要方法如下:
全选功能:
function all1(){
var arr = document.getElementsByName("ids");
var size = arr.length;
for(var i = 0 ; i < size ; i++ ){
arr[i].checked=true;
}
}
反选功能:
function reselected(){
var arr = document.getElementsByName("ids");
var size = arr.length;
for(var i = 0 ; i < size ; i++ ){
arr[i].checked= !arr[i].checked;
}
}
清空功能:
function clear1(){
var arr = document.getElementsByName("ids");
var size = arr.length;
for(var i = 0 ; i < size ; i++ ){
arr[i].checked=false;
}
}
然后获取它的id:
function $(id){
return document.getElementById(id);
}
function delForm(){
var f = $("delForm");
f.submit();
}
提交到servlet页面上进行处理和控制:
servlet的页面控制代码可以获取要删除的数据,把它存到一个数组里面,然后调用java方法进行统一的删除。其中java方法的代码如下:
public void removeLinkManById(String[] ids) {
if(ids == null)return;
StringBuffer sb = new StringBuffer();
for(String id : ids){
sb.append(id+",");
}
String sb1 = sb.substring(0, sb.length()-1);
String sql = "delete from t_linkman where id in ("+sb1+")";
SQLHelper.update(sql,null);
}
在servlet页面中进行调用和页面跳转,实现跳到当前页面:
//获取要是删除的数据
String [] ids = request.getParameterValues("ids");
//调用删除方法
LinkManService.getInstance().removeLinkManById(ids);
//获取http头,就是获取当前的路径
String path = request.getHeader("Referer");
//该方法是如果当前页全部删除了就不能再跳,要跳到前一页,该方法一会将介绍
String path1 = PageNoConvert.convert(path);
//request.getRequestDispatcher("main1.jsp").forward(request, response);
//重定向转到当前页面,在此不能使用转发,转发将会出错
response.sendRedirect(path1);
PageNoConvert类:(主要功能是为了防止用户全部删除页面后,返回到的页是空的,所以要做相应的处理,转向前一页,达到一定的效果),该类的代码如下:
public final class PageNoConvert {
/**该类完全都是运用字符串的处理方式
* pageNo=3 如果3没在内容跳到pageNo = 2;
* @param url
* @return
*/
public static String convert(String url){
if(url == null)return null;
//必须 4 位置
int index = url.indexOf("pageNo")+7;
//pageNo = 4
String pageNo = url.substring(index);
if(pageNo == null)return null;
int page = Integer.parseInt(pageNo);
boolean exists = LinkManService.getInstance().isExistsByPageNo(page);
//这一页己经不存在内容
if(exists == false){
page = page - 1;
}
if(page < 1){
page = 1;
}
String nurl = url.replaceAll(pageNo,Integer.toString(page));
return nurl;
}
这样的方法并不是很好,但是对于初学者来说是一种进步,在未来的工作当中,将会很有用处!
分享到:
评论