单条删除和批量删除

5.1 目标

前端的“单条删除”和“批量删除”在后端合并为同一套操作。合并的依据是:单 条删除时 id 也放在数组中,后端完全根据 id 的数组进行删除

5.2 思路

点击总删除和单个删除按钮,弹出模态框,显示你要删除的角色姓名,将其封装为一个数组,然后用户确认,发送ajax请求,后台进行删除

代码(后端)

RoleHandler
@ResponseBody
@RequestMapping("/role/remove/by/role/id/array.json")
public ResultEntity<String> removeByRoleIdAarry(@RequestBody List<Integer> roleIdList) {roleService.removeRole(roleIdList);
return ResultEntity.successWithoutData();
}
service方法
@Override
public void removeRole(List<Integer> roleIdList) {RoleExample example = new RoleExample();
Criteria criteria = example.createCriteria();
//delete from t_role where id in (5,8,12)
criteria.andIdIn(roleIdList);
roleMapper.deleteByExample(example);
}

代码(代码)

声明打开模态框的函数,传入数组参数,清空原来显示过得数组(防止后面用户多次删除进行了累加),声明全局变量的空数组(为后面可以跨函数取值),然后进行将传入的数组进行遍历,将要的名字传入到模态框的DIV中,然后调用数组对象的push方法进要删除的id传入。

function showConfirmModel(roleArray){$("#roleNameDiv").empty();$("#confirmModal").modal("show");window.roleIdArray = [];// 遍历数组for(var i=0;i<roleArray.length;i++){var role = roleArray[i];var roleName = role.roleName;$("#roleNameDiv").append(roleName+"<br/>");var roleId = role.roleId;// 调用数组对象的push方法window.roleIdArray.push(roleId);}}

2.给模态框中的确定按钮绑定删除函数,将上面传入的全局角色id的数组包装成json对象,返回一个值,如何进行ajax提交,返回结果,拿到信息,成功则提示成功,否则提示失败+错误信息

   // 给移除数据绑定点击函数$("#removeRoleBtn").click(function(){  $("#roleNameDiv").empty();// 将全局变量的roleArray包装为json字符串 返回给requestBodyvar requestBody  = JSON.stringify(window.roleIdArray);       $.ajax({"url":"role/remove/by/role/id/array.json","type":"post","data":requestBody,"contentType":"application/json;charset=UTF-8","datatype":"json","success":function(response){var result = response.result;if(result == "SUCCESS"){layer.msg("操作成功!");                      generatePage();}else{layer.msg("操作失败!"+response.message);}                   },"error":function(response){layer.msg(response.status+""+response.statusText);}});         $("#confirmModal").modal("hide");       });

3.给单个删除绑定响应函数
使用juery对象的on函数来解决
// 首先找到所有的“动态生成的”元素附着的静态元素,然后获取到name,打开模态框,将获取的id和名字,传入到数组中去,然后调用1.声明的函数。

 // 给单个删除绑定单击事件$("#rolePageBody").on("click",".deleteBtn",function(){$("#roleNameDiv").empty();var roleName = $(this).parent().prev().text();//打开修改模态框$("#confirmModal").modal("show");var roleArray = [{roleId:this.id,roleName:roleName}];showConfirmModel(roleArray);});

4.通过js将多选框与总选框进行状态绑定,然后利用反向操作,将选框的数量进行比较,相等总数,就全选住了,反之,

 $("#summerBox").click(function(){// 获取当前多选框自身的状态   var currentStatus = this.checked;// 用当前多选框的状态设置其他多选框$(".itemBox").prop("checked",currentStatus);});// 全选全不选的反向操作 $("#rolePageBody").on("click",".itemBox",function(){// 获取当前选中的,itemBox的数量var checkedBoxCount = $(".itemBox:checked").length;// 获取全部,itemBox的数量var totalBoxCount = $(".itemBox").length;// 使用二者的比较结果来设置总的checkbox$("#summerBox").prop("checked",checkedBoxCount == totalBoxCount);});

5.给批量删除进行点击函数的绑定,要遍历当前选中的多选框,然后传入数组中,调用前面声明的函数再。

// 给批量删除绑定点击响应函数$("#batchRemoveBtn").click(function(){var roleArray = [];// 遍历当前选中的多选框$(".itemBox:checked").each(function(){// 使用this引用当前遍历得到的多选框var roleId = this.id;//通过dom获取角色名称var roleName = $(this).parent().next().text();roleArray.push({"roleId":roleId,"roleName":roleName });});// 检查roleArray的长度是否为0if(roleArray.length == 0){layer.msg("请至少选择一个进行删除!");  }else{showConfirmModel(roleArray);}});

html中绑定的class与id

<button type="button" id="batchRemoveBtn" class="btn btn-danger" style="float:right;margin-left:10px;"><i class=" glyphicon glyphicon-remove"></i> 删除</button>
var deleteBtn = "<button id='"+roleId+"' type='button'  class='btn btn-danger btn-xs deleteBtn'><i class=' glyphicon glyphicon-remove'></i></button>";

单条删除和批量删除的思路和实现相关推荐

  1. php tp框架做选中删除,关于thinkphp框架实现删除和批量删除的分析

    这篇文章主要为大家详细介绍了thinkPHP框架实现删除和批量删除的相关资料,需要的朋友可以参考下 本文实例讲一下如何用thinkphp实现数据的删除和批量删除吧. 预期效果图: 原谅博主对照片的处理 ...

  2. 第11章 角色页的删除、批量删除

    <template> <!-- 查询表单 --> <el-form :model="formQuery" ref="ruleFormRef& ...

  3. VUE前端删除和批量删除

    下面给大家介绍一下前端的删除方法,在开发中 我们常常会碰到这种业务,有一些数据需要在前端进行删除,我们并不希望他走后端的接口,而是在点击提交或者其他的业务完成后才走接口,这时我们就用到了vue的前端删 ...

  4. redis关键字删除_Redis批量删除key的小技巧

    一.使用keys+xargs实现 开始实战 1.连接redis,初始数据./redis-cli -h 127.0.0.1 -p 6379127.0.0.1:6379> set java_suis ...

  5. 表名含有后缀 mysql 怎么删除_mysql批量删除指定前缀或后缀表

    今天突然发现我们数据库中多出很多表,后缀名为"copy",预计是navicat直接拷贝导致的,然后要对这些有同样后缀名的表进行删除,假设一个一个选择会非常麻烦,表计较多,在网上找了 ...

  6. docker 删除_docker 批量删除镜像

    这两天做了些实验,生成了这么多镜像.本文研究删除方法和批量删除方法. 准备工作:查看运行中的容器 sudo docker container ls -a sudo docker container l ...

  7. python批量删除_Python批量删除只保留最近几天table的代码实例

    Python批量删除table,只保留最近几天的table 代码如下: #!/usr/bin/python3 """ 批量删除table,只保留最近几天的table &q ...

  8. 怎样把计算机里的图片快速删除,如何批量删除重复图片 电脑中相同图片批量删除的方法...

    因为工作需要,在电脑上存了大量的图片,有些是从网站上批量下载的,这里面难免会有许多重复的,如果数量少的话,一张张地看,再一张张的删除重复图片那还行得通.可是当你一个文件夹里就有几千上万张的图片时,再用 ...

  9. easyUI之增加删除与批量删除

    一.增加 1.添加一个增加按钮 <a id="btn-add" href="#" class="easyui-linkbutton" ...

最新文章

  1. C#利用lambda在函数中创建内部函数
  2. 实战:使用 Mask-RCNN 的停车位检测
  3. MYSQL主从数据库搭建
  4. MariaDB Spider分库分表引擎调研
  5. 两个整数相加 相乘 有符号与无符号 溢出判断条件 移位与2的幂
  6. 【机器学习基础】深入理解极大似然估计(MLE) 1: 引入问题
  7. C# 热敏打印机 Socket 网络链接 打印 图片 (二)
  8. java 取字符串中的数字_java截取字符串中的数字
  9. 《玩转D语言系列》二、D语言现状、基本规定和相关资源介绍
  10. 完全二叉树子节点个数
  11. 【python】list,dict赋值不要用等号,要用extend,update
  12. eclipse启动时间很慢的调优解决
  13. vgh电压高了有什么_能源网建设的风电高电压穿越测试有何作用
  14. 服务器安装cos系统,COS(国产操作系统)安装教程
  15. DayDayUp:平均每篇文章1毛! 本博主自2020年6月1日起,如有任何问题可在博客贴吧留言或者私信博主(包括并不限于GUI软件编写、安装及编程语言中的bug、AI算法设计等),非诚勿扰!
  16. HTML如何变换背景图片,javascript如何更改网页背景图片?
  17. 东北大学C语言课程题库题解专栏目录
  18. 【Matlab】数据插值
  19. 微信头像失效_微信头像地址失效踩坑记附带方案
  20. BZOJ1022: [SHOI2008]小约翰的游戏John

热门文章

  1. 边缘计算与边缘容器的起源
  2. mybase修改默认的markdown样式
  3. python读写word、pdf文档
  4. od机考题目-免单统计-第10讲:高频真题解析 III(上)
  5. 将一个输入的正整数n分解质因数
  6. 百度网盘可以自动备份电脑文件吗?
  7. 类的6个默认成员函数
  8. 来自寂寞码农的第一篇博客
  9. 在终端显示bash:/home/this/catkin_ws/setup.bash:没有那个文件或目录 的解决方法
  10. 数据分析与预测(四)——相关性分析