单条删除和批量删除的思路和实现
单条删除和批量删除
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>";
单条删除和批量删除的思路和实现相关推荐
- php tp框架做选中删除,关于thinkphp框架实现删除和批量删除的分析
这篇文章主要为大家详细介绍了thinkPHP框架实现删除和批量删除的相关资料,需要的朋友可以参考下 本文实例讲一下如何用thinkphp实现数据的删除和批量删除吧. 预期效果图: 原谅博主对照片的处理 ...
- 第11章 角色页的删除、批量删除
<template> <!-- 查询表单 --> <el-form :model="formQuery" ref="ruleFormRef& ...
- VUE前端删除和批量删除
下面给大家介绍一下前端的删除方法,在开发中 我们常常会碰到这种业务,有一些数据需要在前端进行删除,我们并不希望他走后端的接口,而是在点击提交或者其他的业务完成后才走接口,这时我们就用到了vue的前端删 ...
- redis关键字删除_Redis批量删除key的小技巧
一.使用keys+xargs实现 开始实战 1.连接redis,初始数据./redis-cli -h 127.0.0.1 -p 6379127.0.0.1:6379> set java_suis ...
- 表名含有后缀 mysql 怎么删除_mysql批量删除指定前缀或后缀表
今天突然发现我们数据库中多出很多表,后缀名为"copy",预计是navicat直接拷贝导致的,然后要对这些有同样后缀名的表进行删除,假设一个一个选择会非常麻烦,表计较多,在网上找了 ...
- docker 删除_docker 批量删除镜像
这两天做了些实验,生成了这么多镜像.本文研究删除方法和批量删除方法. 准备工作:查看运行中的容器 sudo docker container ls -a sudo docker container l ...
- python批量删除_Python批量删除只保留最近几天table的代码实例
Python批量删除table,只保留最近几天的table 代码如下: #!/usr/bin/python3 """ 批量删除table,只保留最近几天的table &q ...
- 怎样把计算机里的图片快速删除,如何批量删除重复图片 电脑中相同图片批量删除的方法...
因为工作需要,在电脑上存了大量的图片,有些是从网站上批量下载的,这里面难免会有许多重复的,如果数量少的话,一张张地看,再一张张的删除重复图片那还行得通.可是当你一个文件夹里就有几千上万张的图片时,再用 ...
- easyUI之增加删除与批量删除
一.增加 1.添加一个增加按钮 <a id="btn-add" href="#" class="easyui-linkbutton" ...
最新文章
- C#利用lambda在函数中创建内部函数
- 实战:使用 Mask-RCNN 的停车位检测
- MYSQL主从数据库搭建
- MariaDB Spider分库分表引擎调研
- 两个整数相加 相乘 有符号与无符号 溢出判断条件 移位与2的幂
- 【机器学习基础】深入理解极大似然估计(MLE) 1: 引入问题
- C# 热敏打印机 Socket 网络链接 打印 图片 (二)
- java 取字符串中的数字_java截取字符串中的数字
- 《玩转D语言系列》二、D语言现状、基本规定和相关资源介绍
- 完全二叉树子节点个数
- 【python】list,dict赋值不要用等号,要用extend,update
- eclipse启动时间很慢的调优解决
- vgh电压高了有什么_能源网建设的风电高电压穿越测试有何作用
- 服务器安装cos系统,COS(国产操作系统)安装教程
- DayDayUp:平均每篇文章1毛! 本博主自2020年6月1日起,如有任何问题可在博客贴吧留言或者私信博主(包括并不限于GUI软件编写、安装及编程语言中的bug、AI算法设计等),非诚勿扰!
- HTML如何变换背景图片,javascript如何更改网页背景图片?
- 东北大学C语言课程题库题解专栏目录
- 【Matlab】数据插值
- 微信头像失效_微信头像地址失效踩坑记附带方案
- BZOJ1022: [SHOI2008]小约翰的游戏John