MVC之删除

开发工具与关键技术:Visual Studio、MVC
作者:幻奏
撰写时间:2019.04.17

在页面的数据表格中,既然有新增,那一定也有删除吧。那MVC是怎么写删除的呢,就让我来讲一下吧。
删除一般有删除单条数据和删除多条数据。相对来说,删除单条数据比删除多条的简单,因为单条数据不需要循环、拼接和分割。单条数据的删除一般都在数据的后面加一个删除的按钮,而批量删除就只有一个按钮。删除单条和批量删除基本都是一样的,那么我就只讲批量删除了。
首先我们要在表格上选中要删除的数据,然后才能删除。所以,我们先用layui插件里的方法获取选中行的相关数据,然后再判断是否选中数据,没有就提示“请选择要删除的数据!”。

 //删除function ShanChu() {var checkStatus = layuiTable.checkStatus('tabTitles');if (checkStatus.data.length > 0) {} else {layer.msg("请选择需要删除的数据", { icon: 0, skin: "layui-layer-molv" });}}

选中数据后,我们要if的里面声明一个变量,然后在后面用for循环拼接它们的ID。如下:

var employeeIds = "";for (var i = 0; i < checkStatus.data.length; i++) {employeeIds += checkStatus.data[i].EmployeeID + ";";//拼接字符串,如:1;2;3;}

因为每个ID后面都会拼接一个分号,所以最后一个ID也会有一个分号。但是我们分割字符串时是根据它后面的分号分割的,如果最后也有一个分号,那么它就会分割多一个空格出来,我们就要想办法把最后的一个分号给去掉。在这里我们就要用到substring这个方法,它的用法看下面。

employeeIds = employeeIds.substring(0, employeeIds.length - 1);//去掉分号//substring() 方法用于提取字符串中介于两个指定下标之间的字符。//substring(start,stop) 方法返回的子串包括 start 处的字符,但不包括 stop 处的字符。[0,studentIds.length-1)

去掉最后的分号后,我们就要给它拼接提示“你是否要删除多少条信息?”,并用post请求控制器,注意:传过去的ID要一样。

 layer.confirm("您确定要删除选中的" + checkStatus.data.length + "条员工信息?",{ icon: 3, title: "提示" }, function () {$.post("/Page/delEmployeeIds", { EmployeeIDs: employeeIds }, function (msg) {//刷新表格tabTitles.reload();layer.alert(msg, { icon: 0, title: "提示" });});});

视图那边我们就写完了,然后控制器还是老样子,先接收视图传过来的ID,之后再声明三个变量,变量strMrg是用来提示文本的,其他两个是用来计算成功或失败的条数。

然后用if else判断传过来的ID是否为null或者为空字符串,是就返回“参数异常!”,不是就进入下面的步骤。

if (!string.IsNullOrEmpty(EmployeeIDs)){}else{strMsg = "参数异常";}

在里面我们就要对拼接好的ID进行分割,并放在自己创建的数组里面,然后循环一个个地删除。再后面来个提示,成功多少条,失败多少条。

                //对拼接好的id进行分割string[] employeeIds = EmployeeIDs.Split(';'); //{"1","2","3"}foreach (string employeeId in employeeIds)//foreach 循环只适用于数组,并用于遍历数组中的每个键/值对{}strMsg = "总共需要删除" + employeeIds.Length + "条员工信息!其中成功删除" + countSuccessDel + "条,失败" + countFailedDel + "条。";

在foreach循环里面我们要把ID从string类型转化成int类型,然后用LINQ查询出相同ID的员工信息后,就删除它,由于有Single,所以我们要用try {} catch {}捕捉。删除的核心代码是:myModels.PW_Employee.Remove(dbEmployee); 中间写的是它的表,括号里的是它查出来的变量。
不要忘了保存 myModels.SaveChanges(); 还要用上面的变量记录下成功和失败的次数。

                 try{//将string类型的数据转化为intint EmployeeID = Convert.ToInt32(employeeId);//删除员工表PW_Employee dbEmployee = (from tbEmployee in myModels.PW_Employeewhere tbEmployee.EmployeeID == EmployeeIDselect tbEmployee).Single();myModels.PW_Employee.Remove(dbEmployee);myModels.SaveChanges();countSuccessDel++;}catch (Exception e){Console.Write(e);countFailedDel++;}

最后用return返回提示到页面。

return Json(strMsg, JsonRequestBehavior.AllowGet);

删除大概的写法就是这样的,不过你要考虑一下表与表的关系,比如:你把员工表里的ID删除了,那它的用户表不就多了一些垃圾数据吗,所以我们也要把用户表的信息也一起删除掉。
那么我上面就没写完啦,所以我们还要在删除员工表的下面写删除用户表。实际是这样写的。

                        //删除员工表PW_Employee dbEmployee = (from tbEmployee in myModels.PW_Employeewhere tbEmployee.EmployeeID == EmployeeIDselect tbEmployee).Single();myModels.PW_Employee.Remove(dbEmployee);//获取员工用户IDint? userId = dbEmployee.UserID;//删除用户详细表PW_UserRoleDetail dbUserRoleDetail = (from tbUserRoleDetail in myModels.PW_UserRoleDetailwhere tbUserRoleDetail.UserID == userIdselect tbUserRoleDetail).Single();myModels.PW_UserRoleDetail.Remove(dbUserRoleDetail);//删除用户表PW_User dbUser = (from tbUser in myModels.PW_Userwhere tbUser.UserID == userIdselect tbUser).Single();myModels.PW_User.Remove(dbUser);myModels.SaveChanges();countSuccessDel++;

如果它还与什么表有关联,自己考虑是否要删除掉它。MVC的删除大概就是这样了,如果有什么写错的,麻烦你指出来୧(﹒ᴗ﹒)୨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转】Eclipse编辑Spring配置文件xml时自动提示类class包名

转自 http://bigdragon.iteye.com/blog/2396081 第一步&#xff0c;先查看下自己的Eclipse是什么版本&#xff0c;步骤如下&#xff1a; 1.1 点击Eclipse菜单‘Help -> About Eclipse’&#xff0c;如下图&#xff1a; 1.2 点击Eclipse图标如下&#xff0c;看清楚哦&…

Spring Boot读取配置的几种方式

转载自 Spring Boot读取配置的几种方式读取application文件 在application.yml或者properties文件中添加&#xff1a; info.addressUSA info.companySpring info.degreehighValue注解读取方式import org.springframework.beans.factory.annotation.Value; import org.springfra…

MVC之修改

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.04.24ASP.NET MCV的增删查改在我前面的讲解中&#xff0c;我已经把前三个都说了一下&#xff0c;现在就只剩下修改没讲了。所以&#xff0c;我今天就给你们讲一下&#xff0c…

VMnet1和VMnet8 未识别的网络的解决方法

转自&#xff1a; https://blog.csdn.net/jackphang/article/details/8939738 我的系统是win7 64位&#xff0c;它居然不能识别VMnet1和VMnet8&#xff0c;在网上找了些资料&#xff0c;发现所有资料都是一样的。不过事实证明是正确的。 解决办法&#xff1a; 1&#xff0c;在…

jps命令:查看Java进程等详细信息

转载自 jps命令&#xff1a;查看Java进程等详细信息jps是java自带的查看java进程的命令&#xff0c;通过这个命令可以查看当前系统所有运行中的java进程、java包名、jar包名及JVM参数等。jps -help 可以查看命令用法。-q: 只显示VM 标示&#xff0c;不显示jar,class, main参数等…

MVC如何添加Model

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.04.27初步学习MVC编程模式的时候&#xff0c;我基本清楚了如何创建MVC&#xff0c;而添加model&#xff08;模型&#xff09;似乎还不够理解&#xff0c;通过学习我大概了解了…

在win10系统中安装Visual C++ 6.0的具体方法

转自&#xff1a; https://blog.csdn.net/qq_39235641/article/details/79102694 很多学C语言的同学很熟悉VC6.0&#xff0c;但是在win10系统下&#xff0c;VC6.0便无法打开&#xff0c;报错&#xff1a;0x0000142。这是因为汉化版本和最新的win10系统兼容性不好导致的。win10…

如何设计一个安全的登录流程

转载自 如何设计一个安全的登录流程登录是系统中最重要的一个功能之一&#xff0c;登录成功就能拥有系统的使用权利&#xff0c;所以设计一个安全的登录流程是十分必要的&#xff0c;那在一般登录中需要考虑哪些重要因素呢&#xff1f;我们一一列表一下。使用https协议进行传输…

如何导入数据模板到MVC

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.5.3在平常的生活中&#xff0c;我们可能需要添加大量的数据&#xff0c;这时一条一条地新增肯定不能满足我们的要求了&#xff0c;所以我们就需要批量导入数据了。现在我就来…

在左表或右表的连接字段上建立索引对左、内连接的查询效率的优化情况分析

-- 1、建表 drop table if exists dept_tbl;create table dept_tbl (rcrd_id int unsigned primary key auto_increment comment 记录编号, dept_id int unsigned not null comment 部门编号) engine innodb default charsetutf8 comment 部门表;drop table if exists emp_tb…

并发控制--悲观锁和乐观锁详解

转载自 并发控制--悲观锁和乐观锁详解背景考虑下面两个并发带来的问题&#xff1a;1、丢失更新&#xff1a;一个事务的更新结果覆盖了其它事务的更新结果&#xff0c;即所谓的更新丢失。2、脏读&#xff1a;当一个事务读取其它完成一半事务的记录时&#xff0c;就会发生脏读取。…

如何导出数据到Excel表格

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.5.5我们在日常的生活中常常会看到很多的数据&#xff0c;有时&#xff0c;我们不一定只是在项目里面看到数据&#xff0c;可能我们还要在其他的地方使用&#xff0c;这时我们…

mysql批量插入数据的函数和存储过程

-- 创建函数前&#xff0c;设置 set global log_bin_trust_function_creatorsTRUE; -- 新建函数-产生随机的字符串 drop function if exists rand_str; delimiter ## create function rand_str(n int) returns varchar(255) begin declare chars_str varchar(100) default abc…

打印水晶报表

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.5.8我们在日常生活中常常会打印很多东西&#xff0c;所以我打算讲一下是怎么打印水晶报表的。 打印水晶报表其实和导出差不多&#xff0c;只是有一点不同。打印也用到了多条件…

Java提升篇-事务隔离级别和传播机制

转载自 Java提升篇&#xff0d;事务隔离级别和传播机制问题的提出为了保证并发操作数据的正确性及一致性&#xff0c;SQL规范于1992年提出了数据库事务隔离级别。事务隔离级别分类事务隔离级别由低往高可分为以下几类READ UNCOMMITTED&#xff0c;读取未提交的数据。这是最不安…

多个会话对表加表级读锁和表级写锁后的操作权限分析(表级读锁+表级写锁)

【0】README&#xff1a; 不论是加读锁还是写锁&#xff0c;必须要等到其他数据库连接关闭后才可以进行&#xff1b; 【1】添加表级读锁 1.1&#xff09;多会话执行的时序操作分析&#xff1a; 1.2&#xff09;session1执行的具体时序操作&#xff1b; mysql> select * …

如何写登录验证

如何写登录验证 开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.05.12我们都知道很多网站都会有登录的界面&#xff0c;目的就是要验证你的账号是否正确&#xff0c;不正确就不能登录&#xff0c;这样就能防止有其他目的的…

关于Java序列化你应该知道的一切

转载自 关于Java序列化你应该知道的一切 什么是序列化 我们的对象并不只是存在内存中&#xff0c;还需要传输网络&#xff0c;或者保存起来下次再加载出来用&#xff0c;所以需要Java序列化技术。 Java序列化技术正是将对象转变成一串由二进制字节组成的数组&#xff0c;可以通…

mysql事务基础+基于innodb的行锁+间隙锁+如何锁定行

【0】README outlines are as follows : 行锁&#xff1b;事务&#xff1b;隔离级别&#xff1b;行锁变表锁&#xff1b;间隙锁&#xff1b;如何锁定一行&#xff1b;行锁总结&#xff1b; 【1】行锁事务存储引擎基础 1、行锁&#xff1a; 偏向于 innodb 存储引擎&#xff0c…

页面跳转、嵌套

页面跳转、嵌套 开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.05.16在日常浏览网页的时候&#xff0c;我们常常能看到很多不同样式的网页&#xff0c;其中我们用的最多的应该就是跳转了&#xff0c;点击链接跳转、点击按…