C#删除

本文讲述了C#中进行数据删除的方法,包括单条删除和批量删除。在单表删除时,通过主键ID实现数据删除,使用lambda表达式配合Single()方法进行查询。批量删除涉及异步提交问题,需要处理执行顺序,确保删除操作的正确性。在删除前,通过layui的提示询问框提供用户确认,避免误操作。此外,文章还介绍了多表数据删除的情况,需要遍历多张表并捕获可能的错误。最后,总结了新增和删除操作的步骤,强调了控制器方法和页面请求方法的重要性。

有新增肯定回有删除,多余的数据、废弃的数据肯定要删除,留在数据库占内存,影响项目的运行效率。删除可以单条数据的删除,也可以快捷删除,批量删除减少单条删除的操作。
单表删除数据需要传入选中要删除的数据的主键ID,实现根据ID删除数据;
删除学生证书信息,根据学生证书ID作为条件查询证书表的单条数据,Single()返回序列的唯一元素;如果该序列并非恰好包含一个元素,则会引发异常。用lambda表达式写查询方法,如果删除保存成功,则返回true;如果删除失败,则返回false。
在这里插入图片描述
写好删除方法,则需要页面请求方法才能实现删除操作;要同时删除多条数据,可以直接在方法中遍历循环选择的数据,根据传入的ID删除数据,也可以在页面获取要删除的数据然后遍历循环请求删除方法。
在这里插入图片描述
请求方法的时候用了异步提交方法,既然都说是异步那代码执行先后顺序就不会按代码顺序来执行了,那么你想按代码的现后顺序执行,就要通过代码来取消异步提交,

$.ajaxSettings.async=false;//取消异步
ajaxSettings为JQuery AJAX设置方法,async是否异步,true(异步)或
false(同步)。
如

果不取消异步提交,那么执行返回的提醒信息与执行的效果相反,比如:用户选中两条要删除的数据,执行删除时,因为异步问题,所以代码执行先后顺序不一样,导致返回的提示信息是0条数据删除成功,2条数据删除失败。
for循环遍历选中要删除的数据,实现批量删除数据;删除成功返回提示,同时刷新表格。对于删除数据不能直接就把数据删除了,需要给用户一个反应时间、再次确认的权利,所以在删除之前提示用户选择的询问框是否要删除所选的数据,因为JS原生的提示的询问框不好看,所以用了layui的提示的询问框。layui的提示的询问框(layer.confirm)类似系统confirm,但却远胜confirm,另外它不是和系统的confirm一样阻塞你需要把交互的语句放在回调体中。同样的,它的参数也是自动补齐的。对于表格数据的选中行事件,调用了layui插件的表格选中行事件获取要删除的数据。
在这里插入图片描述
新增信息时,新增一条信息操作了三张表,那么删除时也同时要操作三张表;新增数据到那三张表通过操作用户ID新增,那么删除也同样要找到用户ID才能删除相对应的数据。

多表数据删除方法:删除的数据来源于多张表,声明字符串形式的学生ID作为传入参数即:string studentIDs,方法可以单条删除数据也可以批量删除数据。

要操控的三张表:用户表UserID、用户角色明细表UserRoloDctailID、学生表studentID
ReturnJson returnJson = new ReturnJson();//实例化提示信息类
//变量intSuceessCount记录删除成功条数,intFailCount记录删除失败条数
int intSuceessCount = 0, intFailCount = 0;//类型一样可以并接写

一、判断页面传入的数据是否为空,

 if(!string.IsNullOrEmpty(strStudentIDs)){
//声明字符串数组,并截取去掉';'
string[] strStudentIDs = studentIDs.Split(';');//Split截取的标志';' eg: 444;555;666 =>444555666

二、foreach遍历循环传入数据的集合
//遍历 strStudentIDs要遍历的集合StudentID要遍历的集合里的数据

foreach (var StudentID in   strStudentIDs){ 
  int studentID =Convert.ToInt32(StudentID); //页面得到转换成32位的int类型  Convert万能转换

三、用try{}catch{}捕足错误,查询多张表数据,移除查询出的数据

try{//根据studentID查询学生表的数据
var dbstudent = (from tbstuden in myModels.PW_Student
			where tbstuden.studentID == studentID
			select tbstudent).Single();
myModels.PW_Student.Remove(dbstudent);//移除
var userID = dbstudent.UserID;//获取刚删除的数据对应的UserID
//根据刚删除的学生信息的UserID查询用户表数据
PW_User dbUser = (from tbuser in myModels.PW_User
				where tbuser.UserID ==userID
				select tbuser).Single();
myModels.PW_User.Remove(dbUser);//移除
//用户角色明细表UserRoloDctailID
PW_UserRoleDetail  dbUserRoleDetail = (from tbUserRoleDetail in myModels.PW_UserRoleDetail
       				        where tbUserRoleDetail.UserID == userID
 					select tbUserRoleDetail).Single();
myModels.PW_UserRoleDetail.Remove(dbUserRoleDetail);
myModels.SaveChanges();//保存删除的数据
intSuceessCount++;//记录成功删除的条数
}
catch (Exception e){
 intFailCount++;//记录删除失败的条数
 }
}
returnJson.State = true;//删除成功的状态
returnJson.Text = "总共删除" + strStudentIDs.Length + "条学生信息";//提示删除多少条数据
//判断记录下的数据是否大于0,大于0则说明已记录到数据
if (intSuceessCount >0){
returnJson.Text += ",成功" + intSuceessCount + "条";//提示多少条数据删除成功
}
if (intFailCount > 0){     
returnJson.Text += ",失败" + intFailCount + "条";//提示多少条数据删除失败
}

四、返回提示信息return Json(returnJson, JsonRequestBehavior.AllowGet);

删除单条数据,页面提醒用户,给用再次确认是否删除数据,确认删除数据则直接请求删除方法,删除按钮在表格里面的按钮列,点击删除按钮是就是直接提示是要确认删除数据,不必再去获取当前选中行数据;批量删除数据的按钮在数据表格之外,要删除数据所以需获取到当前选中行数据;
在这里插入图片描述
获取当前选中行的数据,判断是否获取到当前行的数据,获取不到提示用户请选择要删除的数据;如果选中有要删除的数据,用var声明一个变量接收学生ID,for循环遍历获取到的数据,给变量拼接字符串,方法遍历传入的值时已经将学生ID之间的“;”分割出来。接收学生ID的变量要截取最后一个学生ID的“;”,以防截取之后出现空白的ID。删除的提示效果如下截图:
没有选择到要删除的数据提示
删除提示
删除成功的提示
总结:新增时先判断是否已存在,不存在就先新增用户表,根据新增用户表的对应用户ID在新增学生表和用户角色明细表;删除先删除学生表,再根据删除的学生信息的对应用户ID作为条件在用户表查询数据,再删除用户表对应的信息,最后删除用户角色明细表。不管是增删查改都是要控制器声明方法,页面请求方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值