开发工具与关键技术:VS 修改
作者:听民谣的老猫
撰写时间:2019/4/17 15:15
总结一下信息管理的修改部分(省略前端)。
______ 修改
首先在设置操作按钮时要确保获取到了所有数据的ID值,以为我们是通过ID来查询信息,如果你在这里出现错误的话就会导致数据的回填失败。
- 根据ID查询信息(控制器部分)
public ActionResult selectEmployeeById(自定义方法名)(int EmployeeID(上面设置操作按钮时封装好的参数)) {
EmployeeVo EmployeeInfo(自定义名称) = (from tbEmployee(自定义的表名) in myModels.PW_Employee(连接的表)
(EmployeeVo在我写的关于查询的博客中有讲过,它是一个封装类)
join tbUser(自定义的表名) in myModels.PW_User(连接的表) on tbEmployee.UserID(连接的条件) equals tbUser.UserID(连接的条件)
where tbEmployee.EmployeeID(查询条件) == EmployeeID
select new EmployeeVo
{ (为自定义类的每个字段赋值)
EmployeeID = tbEmployee.EmployeeID,
UserID = tbUser.UserID
}).Single();
return Json(EmployeeInfo, JsonRequestBehavior.AllowGet);
(将查询出来的数据返回)
}
- 点击修改按钮弹出修改模态框(视图层部分)
//弹出修改的模态框
function openUpdateModal(自定义)(mployeeID(自定义)) {
//重置表单
$("#formInsertExaminee(表单ID)").resetForm()
});
//查询考生信息,回填数据
$.post("selectEmployeeById(获取修改数据的路径)", { EmployeeID(设置操作按钮时封装的参数): mployeeID(自定义) }, function (stuData) {
(stuData用来接收查询出来的数据)
//下拉框数据绑定&数据回填
createSelect("DepartmentID(下拉框ID)", "selectDepartment(下拉框数据查询方法)", stuData.DepartmentID);
(stuData.DepartmentID查询出来的数据中的DepartmentID)
//其他表单数据回填
loadDatatoForm("formUpdateExaminee(表单ID)", stuData);
});
//弹出模态框
$("#modUpdateExaminee(模态框ID)").modal("show");
}
- 保存修改(视图层部分)
//保存修改
function 自定义方法名() {
//获取页面数据
var 自定义A = $("#模态框ID [name='模态框文本框名称']").val();
var 自定义B = $("#模态框ID [name='模态框下拉框名称']").val();
........ (按照上面同样的格式还有就继续获取)
//数据完整性验证
if ( 自定义B> 0 && 自定义A!= "" && ) {
(数据类型不同判断条件也不同)
//加载层
var load = layer.load();
//提交表单
$("#表单ID").ajaxSubmit(function (returnJson) {
//关闭加载层
layer.close(load);
if (returnJson.State) {
layer.msg(returnJson.Text, { icon: 1, title: "提示" });
//关闭模态框
$("#模态框ID").modal("hide");
//刷新表格
表格ID.reload();
- 保存修改(控制器部分)
public ActionResult 自定义(PW_Employee数据库的表 pwEmployee自定义){
(因为修改数据是把修改的数据传入到对应的表,pwEmployee是我用来接收修改数据的表对象)
//判断信息是否与数据库已有数据重复
int countEmployee(自定义) = (from tbEmployee(自定义) in myModels.PW_Employee
where tbEmployee.EmployeeID != pwEmployee.EmployeeID &&
( tbEmployee.EmployeeNumber ==pwEmployee.EmployeeNumber ||
tbEmployee.EmployeeName == pwEmployee.EmployeeName)
(用接收到修改数据的pwEmployee与数据库中的PW_Employee做相应的数据比较,判断是否与已有数据重复)
if (countEmployee == 0) {
//修改学生表
//提取需要修改的学生信息
PW_Employee Employee = (from tbEmployee in myModels.PW_Employee
where tbEmployee.EmployeeID == pwEmployee.EmployeeID
select tbEmployee).Single();
(通过tbEmployee.EmployeeID == pwEmployee.EmployeeID来提取到数据库中对应的表信息)
_____ 笔记
这里最容易因为获取不到EmployeeID导致数据异常。
(解决方法:就是你写前端修改模态框的时候是不是写了EmployeeID的隐藏域,并且隐藏域是否包含在提交数据的表单中,或者隐藏域的命名是否与数据库命名一致。)
(将数据库中的表信息替换成我们接受到的对应修改信息)
//编号
Employee.EmployeeNumber = pwEmployee.EmployeeNumber;
//姓名
Employee.EmployeeName = pwEmployee.EmployeeName;
//保存修改
myModels.Entry(Employee).State = EntityState.Modified;(修改关键句)
if (myModels.SaveChanges() > 0)
{
(判断数据库是否已经新增,也就是判断数据库是否发生改变) returnJson.Text = "修改成功^-^";
}