删除数据
删除数据
开发工具与关键技术:Visual Studio 2015
作者:徐晶旗
撰写时间:2019年5月17日
下面我来做一下删除的介绍,删除分为单条数据的删除和批量删除。
首先来做一下单条数据的删除,先到控制器中写一个方法,然后在控制器中找到方法名,再到页面上找到删除的按钮给它绑定一个点击事件”onclick”。获取学生ID,把它作为参数传给这个方法。
btn += '<button class="layui-btn layui-btn-xs layui-btn-danger" onclick="delStudent(' + studentId + ')">删除</button>';
所以接下来写一个函数调用这个方法来接收传递到的参数,一般在做删除之前会弹出一个是否确定要删除的提示框,如果真的确定要删除再做删除的操作,所以这里要用到了layer的弹出层,然后再用post请求这个删除的方法,这个方法的调用是在删除的操作按钮这里,获取到的参数传给这个方法,把数据从数据库中删除掉,下面的{ }是用来传参数的,它的值就是调用函数时传过来的值。
以下是代码:
//单条数据的删除
function delStudent(StudentID)
{
layer.confirm('确定要删除这条学生信息吗?', { icon: 3, title: '提示' }, function (index) {
$.post("delStuInfos", { StudentID: StudentID }, function (msg) {
});
}
然后把它的值放到控制器传递参数的位置,接下来通过传递过来的学生ID查询要删除的学生信息,查询条件是学生表里的学生ID等于页面上传过来的学生ID,然后查询这条数据,,用Single查询返回过来的数据是否为唯一的一条数据,接下来用Models中的学生表调用一下移除的方法Remove,把查询到的这一条数据放进来就移除了,把要删除的数据删掉了再保存修改。
代码如下:
PW_Student dbStudent = (from tbStudent in myModels.PW_Student
where tbStudent.studentID == StudentID
select tbStudent).Single();
myModels.PW_Student.Remove(dbStudent);
然后回到页面请求方法的后面返回数据,刷新表格就可以了,这就是单条数据的删除。
$.post("delStuInfos", { StudentID: StudentID }, function (msg) {
layer.alert(msg, { icon: 0, title: "提示" });
//刷新表格
tabStudent.reload();
接下来做一下批量删除的操作,批量删除和单条数据删除操作其实是一样的,批量删除就是一次性选中多条数据,然后进行删除,而单条数据删除就是直接传递进来的ID,通过获取这个ID进行删除,同样,批量删除也是先绑定点击事件,然后获取表格的选中行,有了选中行这样一个效果之后,再回到获取选中行这个方法里面,在删除之前获取到表格选中的多条数据,然后把这些数据里所有的学生ID把它提出来,提取之后把它传到控制器,传到控制器之前需要把这些ID全部拼接到一起,拼接成一个字符串,然后对这个字符串进行拆分,拆分成单个ID,通过foreach循环这些ID,来进行删除的操作。然后判断是否选中数据,如果大于0则选中数据,写一个for循环,初始值等于0,在for循环之前申明一个变量,用一个弹出层先询问用户是否确定要删除选中的数据,在这里加了一个字符串的拼接,一起提醒用户选中了多少条数据,用户点击确定之后再执行post请求。
function delStudents()
{
//获取表格中选中行的数据
var checkStatus = layuiTable.checkStatus('tabStudent');
//console.log(checkStatus);
//判断是否选中数据
if (checkStatus.data.length > 0)
{
var studentIds = "";
for (var i = 0; i < checkStatus.data.length; i++)
{
studentIds += checkStatus.data[i].studentID + ";";//8593;8592;
studentIds = studentIds.substring(0, studentIds.length - 1);//8593;8592
layer.confirm("您确定要删除选中的" + checkStatus.data.length + "条学生信息吗?", { icon: 3, title: "提示" }, function (index) {
$.post("delStuInfos", { StudentID: studentIds }, function (msg) {
//刷新表格
tabStudent.reload();
layer.alert(msg, { icon: 0, title: "提示" });
});
});
}
else
{
layer.alert("请选择需要删除的数据");
到控制器中接收页面传过来的字符串类型的一个参数,先申明一个返回值,给它一个初始值,先判断一下页面是否有传过来传过来字符串类型的一个参数,就是它里面是否有值,其实这也是第二次验证,在页面上做了一次是否大于0的一次判断,第二次是为了在拼接的时候出错,所以在这里再写一次判断,用if判断是否为空,不为空再执行里面的操作,接下来分割字符串,和遍历循环字符串数组
public ActionResult delStuInfos(string StudentID)
{
string reStr = "failed";
int countSuccess = 0;//记录删除成功的数据条数
int countFailed = 0;//记录删除失败的数据条数
if (!String.IsNullOrEmpty(StudentID))//8593;8592;
{
//分割字符串
string[] studentIds = StudentID.Split(';');//["8593","8592"]
//遍历循环字符串数组
foreach (string studentId in studentIds)
{
try
{
int intStudengId = Convert.ToInt32(studentId);
//删除学生表
PW_Student dbStudent = (from tbStudent in myModels.PW_Student
where tbStudent.studentID == intStudengId
select tbStudent).Single();
myModels.PW_Student.Remove(dbStudent);
//用户角色明细表
int? UserID = dbStudent.UserID;
PW_UserRoleDetail dbUserRoleDetail = (from tbUserRoleDetail in myModels.PW_UserRoleDetail
where tbUserRoleDetail.UserID == UserID
select tbUserRoleDetail).Single();
myModels.PW_UserRoleDetail.Remove(dbUserRoleDetail);
//用户表
PW_User dbUser = (from tbUser in myModels.PW_User
where tbUser.UserID == UserID
select tbUser).Single();
myModels.PW_User.Remove(dbUser);
myModels.SaveChanges();
countSuccess++;
}
catch (Exception)
{
countFailed++;
}
}
遍历循环完再给这个申明的变量附一个值,总共需要删除的数据条数然后成功多少条失败多少条,如果数据异常,则提示参数异常。
reStr = "总共需要删除" + studentIds.Length + "条学生信息!其中成功删除" + countSuccess + "条,失败" + countFailed + "条。";
}
else
{
reStr = "参数异常";
}
return Json(reStr,JsonRequestBehavior.AllowGet);
}
注:代码来自老师上课内容
上一篇: php 删除目录下所有文件的代码
下一篇: 批量删除