修改数据
数据修改
开发工具与关键技术: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: "提示" });
}
上一篇: 从零开始做自动驾驶定位(二): 数据集
下一篇: tp5 隐藏入口文件index.php
推荐阅读
-
t-sql清空表数据的两种方式示例(truncate and delete)
-
t-sql/mssql用命令行导入数据脚本的SQL语句示例
-
MsSQL数据导入到Mongo的默认编码问题(正确导入Mongo的方法)
-
如何恢复SQL Server 2000损坏的数据库文件
-
MS SQL Server数据库清理错误日志的方法
-
SQLServer用t-sql命令批量删除数据库中指定表(游标循环删除)
-
sqlserver数据库大型应用解决方案经验总结
-
sqlserver数据库移动数据库路径的脚本示例
-
将ACCESS数据库迁移到SQLSERVER数据库两种方法(图文详解)
-
把excel表格里的数据导入sql数据库的两种方法