根据主键ID修改已经存在的数据

对比一下新增的基本思路和修改思路:
保存新增的基本思路:
弹出模态框 → 重置表单 → 提交新增数据 → 关闭模态框
保存修改的基本思路:
弹出模态框 → 重置表单 → 回填数据(数据回显) → 提交修改数据 → 保存修改操作 → 关闭模态框
对比之后不难发现:修改其实就是比新增多了一个操作数据的回填(也称之为数据回显)
在这里插入图片描述
在这里插入图片描述
上面两张图是修改前和修改后的数据对比(修改了一下学生的图片信息、学生所在年级、学生所在班级)
修改实质是将保存新增之后的数据回填到页面然后用户再次对数据进行修改,若没有数据回填到页面的这一操作。修改操作直接会变为新增操作,到那时修改新增没有区别可言了。
在这里插入图片描述
进行修改时通常需要根据主键ID来进行修改操作,通过主键ID来获取修改的信息而ID是对用户不可见的,所以需要使用隐藏域。
隐藏域在页面中对于用户是不可见的,发送表单的时候,隐藏域的信息也被一起发送到服务器。

在这里插入图片描述
对保存修改的代码分析:
createSelect(selectId, url, value)是自己自己定义的方法,用来根据URL创建下拉框,可进行数据回填
/**
@param fromId form表单id * @param url 查询下拉框的url * @param value 设置值
**/

appendOption(id, url)同样也是自己定义的方法,只能用来绑定数据下拉框数据的,不可进行数据回填
/**
@param fromId form表单id * @param url 查询下拉框的url
/
loadDatatoForm(fromId, jsonDate) 自己定义的根据json对象填充form表单
/

@param fromId form表单id
@param jsonDate json对象
*/
对上面appendOption(id, url), createSelect(selectId, url, value)方法的补充

function appendOption(id, url) { $.getJSON(url, function (data) {
$("#" + id).empty(); $("#" + id).append("" +
“----请选择----” + “”); $.each(data, function (i) { $("#" +
id).append("" + data[i].text +
“”);
});
}); }

function createSelect(selectId, url, value) { $.post(url, function
(jsonData) { if (selectId.indexOf(’#’) != 0) {
electId = ‘#’ + selectId;
} $(selectId).empty();//清空该元素 for (k in jsonData) {//创建option (selectId).append(’’ + jsonData[k].text + ‘’);
} if (value != undefined && value != null && value != ‘’) {//设置选中值
$(selectId).val(value);
} }); }

提交数据分两种:
(1) 表单提交(通常使用ajaxSubmit方法在表单的action中提交数据)
Eg:
<form id="formUpdateExaminee" action="/ExaminationManagement/SetExaminee/UpdateStudent" method="post">
红色部分就是表单提交的路径,直接在from表单的action中指向数据发送的路径

ajaxSubmit()提交表单:(上次其实也提及到该方法)
我们直接通过form提交的话,提交后当前页面跳转到form的action所指向的页面。然→→而,很多时候我们并不希望提交表单后页面跳转,那么,我们就可以使用ajaxSubmit(obj)来提交数据
ajaxSubmit(obj)方法是jQuery的一个插件jquery.form.js里面的方法,所以使用此方法需要先引入这个插件
(2) 异步提交数据:方法路径 → 参数 → 回调函数 → 控制器方法
Eg:

$.post("/区域名称/控制器名称/方法名称", //(提交方法的路径)
{ 控制器参数: 自定义参数, 控制器参数: 自定义参数, },//(参数)
function (returnJson) { //(回调函数)
if (returnJson.State == true) { //进行模态框的关闭 和 表格的刷新 }
layer.alert(returnJson.Text);
}, “json”);

异步提交数据可以post提交或者get提交,但是推荐使用post 提交数据。get提交数据会直接将数据暴露在路径中,安全性不高。Post提交不会直接暴露,安全性较好。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
控制器方法修改逻辑:
核心:
myModels.Entry(需要修改的表格).State = System.Data.Entity.EntityState.Modified; (修改数据集数据)
myModels.SaveChanges(); (修改数据库数据)

逻辑:
(1)判断修改前后的数据是否与数据库数据是否重复
(2)判断数据是否存在,存在就根据ID将需要修改的数据从表格中提取出来
(3)将表格的状态修改为修改状态(修改数据集的数据)
(4)将修改信息保存到数据库
运行:
绑定数据 → 回填数据 → 弹出模态框 → 通过ID获取页面数据 → 判断是否为空 → 提交数据。
申明:代码图的代码来源于项目学习期间代码

猜你喜欢

转载自blog.csdn.net/weixin_44543219/article/details/89338427