修改数据

数据修改

开发工具与关键技术:Visual Studio 2015
作者:徐晶旗
撰写时间:2019年5月16日 

在做项目的时候经常要用到增删查改,这也是在做项目的基本操作。
下面就简单的做一下修改学生信息的介绍,修改和新增一样,需要先弹出一个修改模态框,在控制器中找到方法名,找到修改的按钮给它绑定一个点击事件”onclick”。

btn += '<button class="layui-btn layui-btn-xs" onclick="openUpdateModal(' + studentId + ')">修改</button>';

然后再调用它的方法名
function openUpdateModal(studentID)
修改需要主键id,在修改的模态框里把它要修改的主键放到form表单里面,在数据回填的时候实际上也回填了它的主键id,通过表单的提交把主键提交到控制器,在修改的时候控制器可以根据它的主键来修改数据库里面的数据。如果要修改学生信息,就要传过它的学生ID,然后到方法里面接收参数,方法是在表格渲染的时候把它传过来的,再申明变量,获取它的参数,然后在修改的方法这里给一个形参,接收主键ID的修改,在我们打开模态框之前我们要先重置表单,然后把它的表单清空,避免还残留之前修改并未保存的信息。

//重置表单
$("#formInsertExaminee").resetForm();
//清空图片
 $("#UsImgStudentPicture").attr("src", "");

再回到控制器,获取学生的图片,这里要接收学生id这个参数,(注:要和页面上接收的参数名保持一致),根据学生ID查询数据库中的学生信息,就是一个单表查询,用var传递学生信息,从数据库中的学生表里面查询学生信息,查询条件是从数据库的学生表的主键ID等于页面上传过来的学生ID,然后根据主键ID查询学生图片,用SingleOrdefault验证返回过来的值是否为唯一的一条数据,把它放到try……catch里避免在这一段验证的时候报异常,可以通过try……catch来捕捉它的错误,得到这个值之后再把它放到byte类型的数组里面,赋值到学生图片中,用return File返回文件类型


public ActionResult getStudentPic(int StudentID)
        {
            try
            {
                var studentPic = (from tbStudent in myModels.PW_Student
                                  where tbStudent.studentID == StudentID
                                  select new
                                  {
                                      tbStudent.StudentPicture
                                  }).SingleOrDefault();
                byte[] stuPic = studentPic.StudentPicture;
                return File(stuPic,@"image/jpg");
            }
            catch (Exception e)
            {
                Console.Write(e);
                return Json("failed", JsonRequestBehavior.AllowGet);
            }
        }

写上要传输的参数,接着把数据提交给控制器,这里用的是post提交方法。data是控制器传过来的数据,并在回调函数中回填数据。将参数传递到控制器中通过参数作为条件查询出数据之后,把数据返回视图,通过loadDatatoForm(id,data)回填数据到表单。

//回填页面
 $("#UsImgStudentPicture").attr("src", "getStudentPic?StudentID=" + studentID);
 //回填表单信息
 $.post("selectStudentById", { StudentID: studentID }, function (data)
 {
//学院下拉框数据绑定&回填
createSelect("UsAcademe", "selectAcademe", data.AcademeID);
//专业下拉框数据绑定&数据回填
createSelect("UsSpecialty", "selectSpecialty?AcademeID=" + data.AcademeID, data.SpecialtyID);
//年级下拉框数据绑定&数据回填
createSelect("UsGrade", "selectGrade?AcademeID=" + data.AcademeID, data.GradeID);
//班级下拉框数据绑定&数据回填
createSelect("UsClass", "selectClass?AcademeID=" + data.AcademeID + "&GradeID=" + data.GradeID + "&SpecialtyID=" + data.SpecialtyID, data.ClassID);
//其他表单数据回填
loadDatatoForm("formUpdateExaminee", data);
 });

再到控制器中用if else语句判断修改后的学生信息是否与数据库的学生表数据重复,是则保存失败,提示数据重复,否则保存成功,即修改成功。

if (fileStudentImage!=null && fileStudentImage.ContentLength>0)
                        {
                            //声明变量
                            byte[] imgFile = null;
                            //设置变量的长度
                            imgFile = new byte[fileStudentImage.ContentLength];

                            fileStudentImage.InputStream.Read(imgFile,0, fileStudentImage.ContentLength);
                            dbStudent.StudentPicture = imgFile;
                        }
                        myModels.Entry(dbStudent).State = EntityState.Modified;
                        //保存
                        if (myModels.SaveChanges() > 0)
                        {
                            returnJson.State = true;
                            returnJson.Text = "修改成功^-^";
                        }
                        else
                        {
                            returnJson.State = false;
                            returnJson.Text = "保存失败";
                        }

最后回到页面写保存修改方法,先获取页面传过来的数据,判断其是否都不为空,若有任何一处为空,则输出:请将数据填写完整再保存,若不为空,则向控制器提交数据,传入其相对应的参数。
//数据完整性验证

  if (StudentNumber != "" && UniformAuthenticationCode != "" && StudentName != "" && AcademeID > 0 && SpecialtyID > 0 && GradeID > 0 && ClassID > 0)
        {
            //加载层
            var load = layer.load();
            //提交表单
            $("#formUpdateExaminee").ajaxSubmit(function (returnJson) {
                //关闭加载层
                layer.close(load);
                if (returnJson.State) {
                    layer.msg(returnJson.Text, { icon: 1, title: "提示" });
                    //关闭模态框
                    $("#modUpdateExaminee").modal("hide");
                    //刷新表格
                    tabStudent.reload();
                } else {
                    layer.alert(returnJson.Text, { icon: 0, title: "提示" });
                }
            });
        } else {
            layer.alert("请将数据填写完整再保存!", { icon: 0, title: "提示" });
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值