删除操作的两种写法

删除操作的两种写法

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:Adobe JavaScript

作者:陈钰桃

撰写时间:2020年9月7日

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

成果图

 

-----------------页面部分 js----------------------

实现功能:点击table表格中的删除按钮 删除该行数据

//jQuery 写法

         function deleteAcademe(academeID) {

             layer.confirm("您确定要删除该学院信息?", { icon: 3, title: "提示" }, function (index) {

                 $.post("/BaseInfoManage/Academe/DeleteAcademe",

                        { academeID: academeID }, function (returnJson) {

                           if (returnJson.State == true) {

                               layer.close(index);

                               //刷新table

                                tabAcademeSearch();

                            }

                        layer.alert(returnJson.Text, { icon: 6 });

                    });

               });

           }

 

//javascript 写法

     function deleteAcademe(academeID) {

         //JS自带的提示 直接调用

        //window.confirm  返回的类型是布尔类型  点击确定是true 点击取消是false

          if (window.confirm("你确定要删除该学院信息?")) {

              //console.log("确定");

                var formData = new FormData();

                formData.append("academeID", academeID);

                 var xhr = new XMLHttpRequest();

               //打开发送请求    地址从控制器获取

                xhr.open("post", "@Url.Content("~/BaseInfoManage/Academe/DeleteAcademe")");

                    xhr.onload = function () {

                        //反序列化

                        var jsonMsg = JSON.parse(xhr.responseText);

                        //提示

                        layer.alert(jsonMsg.Text);

                        if (jsonMsg.State) {

                            tabAcademeSearch();//刷新表格

                        }

                    }

                    //post

                    //发送数据

                    xhr.send(formData);

                }

                //else {

                //    console.log("取消");

                //}

            }

注意:以上为页面JS两种写法,实现效果一致

 

 

 

 

 

 

------------------控制器----------------------

第一种写法

public ActionResult DeleteAcademe(int academeID)

{

     ReturnJson msg = new ReturnJson();

  //检查 专业 年级 班级 学生 表是否在使用该学院信息

   //正在使用的数据禁止删除   如果副表删除了的话,子表也就相当于消失了(都与学院有关)

 //根据项目实际需求来进行判断

      int countSpecialty = myModel.SYS_Specialty.Count(o => o.academeID == academeID);

      int countGrade = myModel.SYS_Grade.Count(o => o.academeID == academeID);

      int countClass = myModel.SYS_Class.Count(o => o.academeID == academeID);

      int countStudent = myModel.SYS_Student.Count(o => o.academeID == academeID);

     //可以删除的状态  所有表都没有使用数据 为0

       if ((countSpecialty + countClass + countGrade + countStudent) == 0)

         {

             //普通写法  先查询数据再删除

              try

               {

                  //查询出需要删除的学院信息

                 SYS_Academe academe = myModel.SYS_Academe.Single(o => o.academeID == academeID);

                //删除数据  调用Remove移除   也可以指定状态为移除的状态

                  myModel.SYS_Academe.Remove(academe);

                  if (myModel.SaveChanges() > 0)

                   {

                       msg.State = true;

                       msg.Text = "删除成功";

                   }

                   else

                    {

                        msg.Text = "删除失败";

                    }

                }

                catch (Exception e)

                {

                    Debug.WriteLine(e);

                    msg.Text = "删除学院信息出现异常";

                }

            }

            else

            {

                msg.Text = "该学院信息在使用中无法删除";

            }

            return Json(msg, JsonRequestBehavior.AllowGet);

        }

 

第二种写法

public ActionResult DeleteAcademe(int academeID)

{

      ReturnJson msg = new ReturnJson();

 

     //检查 专业 年级 班级 学生 表是否在使用该学院信息

     //正在使用的数据禁止删除   如果副表删除了的话,子表也就相当于消失了(都与学院有关)

     //根据项目实际需求来进行判断

       int countSpecialty = myModel.SYS_Specialty.Count(o => o.academeID == academeID);

       int countGrade = myModel.SYS_Grade.Count(o => o.academeID == academeID);

       int countClass = myModel.SYS_Class.Count(o => o.academeID == academeID);

       int countStudent = myModel.SYS_Student.Count(o => o.academeID == academeID);

 

      //可以删除的状态  所有表都没有使用数据 为0

       if ((countSpecialty + countClass + countGrade + countStudent) == 0)

        {

//使用linq直接执行sql   方法二(容易出错) [新增 修改 删除都可以执行 但是 查询不可以执行] 方法

//使用sql不需要查询数据

//删除的sql  { }  参数占位符(传参的时候),0代表第一个参数

//数据库删除语句 (找到项目数据库-->新建查询)  DELETE FROM SYS_Academe WHERE(条件) academeID=(一个参数) 【复制到控制器】

     string deleteSql = "DELETE FROM SYS_Academe WHERE academeID={0}";   //容易出错

     //使用linq执行sql

    //   参数  1.需要执行的sql(必需的) 2.参数列表(obj数组)  3.传自己需要的参数  两个参数中间用逗号隔开{ academeID,academeID }

   //ExecuteSqlCommand 返回值是整数

  //ExecuteSqlCommand 新增 修改 删除都可以执行 但是 查询不可以执行

   int intR = myModel.Database.ExecuteSqlCommand(deleteSql, new object[] { academeID });

    if (intR == 1)

     {

         msg.State = true;

         msg.Text = "删除成功";

        }

          else{

                msg.Text = "删除失败";

             }

         }

         else

         {

             msg.Text = "该学院信息在使用中无法删除";

         }

          return Json(msg, JsonRequestBehavior.AllowGet);

      }

//使用linq直接执行sql(可以执行查询方法)不常用

   public async System.Threading.Tasks.Task<ActionResult> Test()

   {

      string selectSql = "select * from SYS_Academe";

List<object> s = await myModel.Database.SqlQuery(typeof(SYS_Academe), selectSql).ToListAsync();

      return null;   //值可以拿到了  但是后面还需要转换

   }

 

//查询出一条数据(academeID !=1 -- 条件1  And(连接条件字符) academeName like '%光%' -- 条件2)--数据库查询写法  sql会自动过滤字符串

//select * from SYS_Academe where academeID != 1 And academeName like '%%' or 1=1 And '' like '%'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值