欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

删除数据

程序员文章站 2022-05-31 16:34:08
...

删除数据

开发工具与关键技术: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);
        }

注:代码来自老师上课内容

相关标签: 删除