删除
- 通过在创建表格的时候给了一个自定义的修改键和删除键的方法
- 创建这个方法后,其实在表格调用这个方法后表格里面的数据也给到了这个方法,在这个方法里面获取到主键ID,在修改键和删除键都有一个点击事件调用函数,把这个主键ID作为参数放在调用函数里,所有在这个调用函数里面就有了这个主键ID数据,再在调用方法里通过post提交数据方法将主键ID传递到控制器中
- 在控制器中创建方法接收到视图传递过来的数据后到数据库里查找该主键ID所在的表,查询出所包含的所有数据,判断这个主键ID的外键ID里面是否存在数据,如果存在数据不能直接删除主键ID对应的数据,如果不存在便把这个数据从数据库中删除掉
视图: - 判断主键ID1的外键ID是否存在数据的方法:在外键ID作为主键ID2的表里面查询是否存在主键ID1,如果存在主键ID1则证明外键ID存在数据,如果不存在主键ID1则说明不存在外键ID的数据
- 需要引入四个插件
注:下面代码模板都来自于李老师的授课内容再加上本人的理解抽取出来的
创建按钮:
在这里插入代码片function A(data) {
var ID = data.NoticeTypeID;//获取主键ID
var btns = '<button type="button" class="layui-btn layui-btn-xs" updateNoticeType(' + ID + ')>修改</button>';
btns += '<button type="button" class="layui-btn layui-btn-xs layui-btn-danger" a(' + ID + ')>删除</button>';
return btns;
}
提交数据:
function a(id) {
layer.confirm("你确定要删除该公告类型吗?", { icon: 3, title: "提示" }, function (index) {
$.post("url", { id2: id1 }, function (msg) {
layer.close(index);//关闭模态框
if (msg.State == true) {
//刷新table表单,reload重新加载
tabNoticeType = layuiTable.reload( ‘id3’ );
}
//提示
layer.alert(msg.Text, { icon: 1 });
});
});
}
控制器:
public ActionResult a(int id2)
{
ReturnJson retutnJson = new ReturnJson();
try
{
//查询公告类型是否有公告类型明细,在公告类型明细表中查询是否存在当前传进来的这个公告类型ID,如果不存在则说明这个公告类型里不存在公告类型明细,可以删除。否则不能删除。
int noticeTypeDetailCount = (from tbNoticeTypeDetails in myModels.SYS_NoticeTypeDetail
where tbNoticeTypeDetails.NoticeTypeID == noticeTypeId
select tbNoticeTypeDetails).Count();
if (noticeTypeDetailCount == 0)//没有公告类型明细
{
//查询出公告类型
SYS_NoticeTypeTable dbNoticeType = (from tbNoticeType in myModels.SYS_NoticeTypeTable
where tbNoticeType.NoticeTypeID == noticeTypeId
select tbNoticeType).Single();
myModels.SYS_NoticeTypeTable.Remove(dbNoticeType);//删除公告类型
if(myModels.SaveChanges() > 0)//判断是否保存成功
{
retutnJson.State = true;
retutnJson.Text = "删除成功";
}
else
{
retutnJson.State = false;
retutnJson.Text = "删除失败";
}
}
else
{
retutnJson.State = false;
retutnJson.Text = "有明细信息,不能删除!";
}
}
catch(Exception)
{
retutnJson.State = false;
retutnJson.Text = "数据异常";
}
return Json(retutnJson, JsonRequestBehavior.AllowGet);
}