开发工具与关键技术:Visual Studio / 单条删除和批量删除
作者:郑名方
撰写时间:2019年5月1日
删除:无论删除单条数据还是删除多条数据,都要根据ID来筛选你要删除的数据。无论修改还是删除都要根据主键筛选出要删除的数据。因为删除的方法有返回值,所以要写返回值。因为删除涉及到提示的问题,用到ReturnJson提示实体,我们一般用ReturnJson的小写做名称。遍历循环你可以用for循环但是因为它是个数组,所以用Forecast这个函数也知道它只需要两个集合,删除语句必须要用try catch来筛选错误预防运行的代码出差错。用int语句拿forecast里的ID做条件查询要删除的ID,单表查询用var条件查询只查询其中一个数据。条件是forecast这个ID先转换成int类型,用万能转换转Int32转换成Int32位的类型。先转换成整形再把它给到var的条件查询作为条件数据筛选,这样就得到一条数据,这条数据就是删除的数据。接下来就可以执行删除的操作,在Modle里移除删除的数据,获取删除对应的ID。如果是单条数据可以用var也可以用具体的实体来接收,但是如果是查询列表(多条数据)就要用var语句。可以一次性保存删除的数据也可以分开保存删除的数据。删除的了多少条数据、一共删除了多少条数据、有多少条数据删除成功、、又有多少条数据删除失败。因为要记录这些信息,所以在删除的方法里声明两条变量,还有给它们初始值。判断成功删除了多少条数据,判断失败删除了多少条数据。
代码的来源是老师上课的代码。
publicActionResultDeleteStudent(string studentIDs)
{ //提示信息实体
ReturnJsonreturnJson = newReturnJson();
//变量intSuceessCount记录删除成功条数,intFailCount 失败条数
intintSuceessCount = 0, intFailCount = 0;
if (!string.IsNullOrEmpty(studentIDs))
{ //学生表studentID
string[]strStudentIDs = studentIDs.Split(';');//截取标志 ;
foreach (varStudentID in strStudentIDs)
{
int studentID = Convert.ToInt32(StudentID);
try
{
PW_Student dbstudent =
(fromtbStudent in myModels.PW_Student
wheretbStudent.studentID == studentID
selecttbStudent).Single();
myModels.PW_Student.Remove(dbstudent);//移除
//获取删除的学生对应的UserID
var userID = dbstudent.UserID;
PW_User dbUser = (from tbUser inmyModels.PW_User
wheretbUser.UserID == userID
selecttbUser).Single();//移除
myModels.PW_User.Remove(dbUser);
//用户角色明细 外键操作UserID,
PW_UserRoleDetail dbUserRoleDetail =
(fromtbUserRoleDetail in myModels.PW_UserRoleDetail
WheretbUserRoleDetail.UserID == userID
selecttbUserRoleDetail).Single();
myModels.PW_UserRoleDetail.Remove(dbUserRoleDetail);//移除
//保存更改
myModels.SaveChanges();
intSuceessCount++;
}
catch (Exception)
{
intFailCount++;
}
}
returnJson.State = true;
returnJson.Text = "总共删除" +strStudentIDs.Length + "条学生信息";
if(intSuceessCount > 0)
{
returnJson.Text += ",成功" +intSuceessCount + "条";
}
if(intFailCount > 0)
{
returnJson.Text += ",失败" + intFailCount+ "条";
}
}
else
{
returnJson.State = false;
returnJson.Text = "参数异常";
}
returnJson(returnJson, JsonRequestBehavior.AllowGet);
}
1单条数据的删除的删除对比批量删除要简单,首先在构建按钮的时候就把主键传到按钮里面了,给按钮一个单击事件给它一个函数。函数执行删除操作,因为删除是个很严谨的问题,所以弹出提示框提示用户确定是否要删除。用到layer用对象的格式,用post异步提交,关闭加载层。
//单条删除
functiondoDelete(intstudentID) {
//确认删除
layer.confirm("确认删除选择的数据吗?", {icon: 3, titile: "提示" }, function (index){
//进行删除操作
$.post("doDeleteStudent", { studentIDs:intstudentID },
function (returnJson) {
if (returnJson.State == true) {
//关闭加载层
layer.close(index);
//刷新表格
tabStudentSearch();
}
//提示
layer.alert(returnJson.Text, { icon: 6 });
})
});
}
2批量删除涉及多条数据的选择必须要用多选框删除,在表格里插入checkbox可以多条选择,获取layui里面的table就有一个layui的方法,用来获取数据的。看有没有选中checkbox,选中就可以点击批量删除按钮。 判断整个数据checkbox有没有选中值,如果有选中值就可以执行批量删除,如果没有选中值那就要提示用户“请选择要删除的数据?”弹出提示框提示用户。获取选中checkbox layuiTable的layer的方法checkStatus即为基础参数 id对应的值 获取选中行数量 循环获取选中的ID 和选择的值相对应就代表批量删除成功删除选中的选中值。进行删除操作 关闭加载层 刷新表格数据)按钮的批量删除提取选中值的ID获取选中值ID
声明一个变量string类型的
//批量删除
functiondoDeleteMore() {
//获取选中checkbox
varcheckStatus = layuiTable.checkStatus('tabStudent');
//获取studentID数据不为空
if(checkStatus.data.length > 0) {
var strIds= '';
for (var i = 0;i < checkStatus.data.length; i++) {
strIds += checkStatus.data[i].studentID + ";";
}
strIds = strIds.substring(0, strIds.length - 1);//去掉最后的 ; 号
layer.confirm('您确定要删选中的' + checkStatus.data.length + '条学生信息?', { icon: 3, titile: "提示" }, function (index){
$.post("DeleteStudent", { studentIDs:strIds },
function (returnJson) {
if (returnJson.State == true) {
layer.close(index);
//刷新table
tabStudentSearch();
}
layer.alert(returnJson.Text, { icon: 6 });
});
});
}
else {
layer.alert("请选择要删除的数据", {icon: 0 });
}
}