开发工具与关键技术:vs 批量删除
作者:黄海峰
撰写时间:2019.05.15
MVC的项目中的批量删除功能是获取多条数据的的唯一标识符,也就是数据库表的主键ID,我们以每获取一个ID后就在这个ID后面加一个分号,将其与其他的ID间隔,防止出现ID混乱的情况出现。这样我们就会得到一串固定格式的字符串数据:第一个ID值;第二个ID值;第三个ID值;···第n个ID值;,得到这串字符串数据后我们再将其分割成数组格式,通过ID与ID之间的分号进行分割处理。这里需要注意一点,我们在获取ID的时候在每一个ID后面都加了一个分号进行间隔处理,字符串数据的最后一位就会是一个分号,这就会使得我们在用分号分割数据的时候数组的最后面会多出一个空白字符的数据,这样的数组对于我们需要全是ID的数组而言是不符合要求的,所以我们在数据分割前需要将字符串的最后一个分号给去除掉,这样就能够获得我们想要的数组了
function delEmployees() {
//获取选中行的数据
var checkStatus = layuiTable.checkStatus(“tabEmployee”);
if (checkStatus.data.length > 0) {
var employeeIds = “”;
for (var i = 0; i < checkStatus.data.length; i++) {
employeeIds += checkStatus.data[i].EmployeeID + “;”;//拼接字符串
}
//去掉最后的一个“;”
//substring() 方法用于提取字符串中介于两个指定下标之间的字符。
//substring(start,stop) 方法返回的子串包括 start 处的字符,但不包括 stop 处的字符。[0,studentIds.length-1)
employeeIds = employeeIds.substring(0, employeeIds.length - 1);
layer.confirm(“您确定要删除选中的” + checkStatus.data.length + “条员工信息?”, { icon: 3, title: “提示” }, function (lay) {
//关闭对话框
layer.close(lay);
$.post("/Main/delEmpInfos", { EmployeeIds: employeeIds }, function (msg) {
//刷新表格
tabEmployee.reload();
layer.msg(msg, { icon: 0, title: “提示” });
});
});
} else {
layer.alert(“请选择需要删除的数据!”, { icon: 0, title: “提示” });
}
}
通过js代码我们得到的我们想要的字符串数据,接下来进行数据分割,让我们获取到所有的ID值,然后对这些ID值进行foreach循环,因为这些ID值都是字符串类型的数据,所以我们要将其转换成int类型的数据,数据转换后我们在通过这些ID在数据库中查询出需要删除的数据,数据查询出来后直接删除。
public ActionResult delEmpInfos(string EmployeeIds)
{
string strMsg = “failed”;//用来记录状态
int countSuccessDel = 0;//记录删除成功的条数
int countFailedDel = 0;//记录删除失败的条数
if (!string.IsNullOrEmpty(EmployeeIds))
{
//对拼接好的id进行分割
string[] employeeIds = EmployeeIds.Split(’;’);
foreach (string employeeId in employeeIds)
{
try
{
//将string类型的数据转化为int
int EmployeeID = Convert.ToInt32(employeeId);
//员工表
PW_Employee dbEmployee = (from tbEmployee in myModels.PW_Employee
where tbEmployee.EmployeeID == EmployeeID
select tbEmployee).Single();
myModels.PW_Employee.Remove(dbEmployee);
//获取删除学生的userid
int? UserId = dbEmployee.UserID;
//用户明细表
PW_UserRoleDetail dbUserRoleDetail = (from tbUserRoleDetail in myModels.PW_UserRoleDetail
where tbUserRoleDetail.UserID == UserId
select tbUserRoleDetail).Single();
myModels.PW_UserRoleDetail.Remove(dbUserRoleDetail);
//用户表
PW_User dbUser = (from tbUser in myModels.PW_User
where tbUser.UserID == UserId
select tbUser).Single();
myModels.PW_User.Remove(dbUser);
myModels.SaveChanges();
countSuccessDel++;
}
catch (Exception e)
{
Console.Write(e);
countFailedDel++;
}
}
strMsg = “总共需要删除” + employeeIds.Length + “条员工信息!其中成功删除” + countSuccessDel + “条,失败” + countFailedDel + “条。”;
}
else
{
strMsg = “参数异常!”;
}
return Json(strMsg, JsonRequestBehavior.AllowGet);
}