在一些项目中的某些展示信息的页面上能直接把数据删除掉同时同步到后台是项目中必须要做的!删除呢,相对于新增与修改数据的方法来说是比它们简单的(但他的简单是在理论上(也就是逻辑操作),但代码量是比之它们最多的,因为要写到多个查询)。
至于方法呢就是我接下来要说的了(就拿一个项目中的例子来说吧,方法是写在控制器上的哈)
public ActionResult DeleteAcademe(int academeId)
{
ReturnJson returnJson = new ReturnJson();
try
{
//检查年级
int intGradeRow = (from tbGrade in myModel.SYS_Grade
where tbGrade.AcademeID == academeId
select tbGrade).Count();
if (intGradeRow > 0)
{
returnJson.State = false;
returnJson.Text = "有对应年级,不能删除,请先删除对应的年级!";
return Json(returnJson, JsonRequestBehavior.AllowGet);
}
//检查专业
int intSpecialtyRow = (from tbSpecialty in myModel.SYS_Specialty
where tbSpecialty.AcademeID == academeId
select tbSpecialty).Count();
if (intSpecialtyRow > 0)
{
returnJson.State = false;
returnJson.Text = "有专业对应,不能删除,请先删除对应的专业!";
return Json(returnJson, JsonRequestBehavior.AllowGet);
}
//删除学院
SYS_Academe dbAcademe = (from tbAcademe in myModel.SYS_Academe
where tbAcademe.AcademeID == academeId
select tbAcademe).Single();
myModel.SYS_Academe.Remove(dbAcademe);
if (myModel.SaveChanges() > 0)
{
returnJson.State = true;
returnJson.Text = "删除成功!";
}
else
{
returnJson.State = false;
returnJson.Text = "删除失败!";
}
}
catch (Exception e)
{
Console.WriteLine(e);
returnJson.State = false;
returnJson.Text = "数据异常!";
}
return Json(returnJson, JsonRequestBehavior.AllowGet);
}
写法:同样是控制器上一个自定义方法,这个方法里就是先实例化returnJson; 对了,要先给ReturnJson定义一下字段,之后就可以直接拿来用了,如上面的图那样(新增那篇也一样);然后就是try尝试,尝试里面有着四个if判断语句,前三个都是先把相关数据表的单条数据查询出来然后判断是否为false(假),为false就执行相对应的代码,就是删除失败,总的效果就是说跟这三个有关联起来的就删除不了,不为false则会执行后面的代码;之后也是先直接把要删除的单条数据查询出来,然后执行删除代码(myModel.SYS_Academe.Remove(dbAcademe););最后判断(myModel.SaveChanges() > 0)数据是否为真(true),是就提示成功删除了,否就执行控制器那边相应的提示删除失败代码。
下面是就是执行删除js代码
> function saveDelete(DacademeId)
> {
> layer.confirm(" 您确定要删除该学院信息?", { icon: 3, titile: "提示" }, function (index) {
> $.post("/SystemManagements/CollegeInfor/DeleteAcademe",
> { academeId: DacademeId }, function (returnJson) {
> //关闭加载层
> layer.close(index);
> if (returnJson.State == true) {
> //刷新table
> tabAcademe = layuiTable.reload('tabAcademe');
> }
> layer.alert(returnJson.Text);
> });
> });
> }
函数里先是弹出一个选择框;然后index回调函数;index回调函数里先是post提交方法,方法里获取控制器上的方法还有传递相关参数与returnJson回调函数;再就是关闭加载层(layer.close(index);)index;最后判断状态是否为true(真),是就删除成功然后刷新table(abAcademe = layuiTable.reload(‘tabAcademe’);)弹出提示框说删除成功,否就是执行控制器里的else代码。
效果图如下
而下图这种情况就是说有着其他数据与之关联着,所以执行else语句提示删除失败。
(提示框之类的都是用的layui插件代码,写法是jquery的写法)