删除操作的两种写法
删除操作的两种写法
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术: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 '%'