欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

修改数据

程序员文章站 2022-04-17 15:54:49
...

数据修改

开发工具与关键技术: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: "提示" });
        }
相关标签: 修改