对比一下新增的基本思路和修改思路:
保存新增的基本思路:
弹出模态框 → 重置表单 → 提交新增数据 → 关闭模态框
保存修改的基本思路:
弹出模态框 → 重置表单 → 回填数据(数据回显) → 提交修改数据 → 保存修改操作 → 关闭模态框
对比之后不难发现:修改其实就是比新增多了一个操作数据的回填(也称之为数据回显)


上面两张图是修改前和修改后的数据对比(修改了一下学生的图片信息、学生所在年级、学生所在班级)
修改实质是将保存新增之后的数据回填到页面然后用户再次对数据进行修改,若没有数据回填到页面的这一操作。修改操作直接会变为新增操作,到那时修改新增没有区别可言了。

进行修改时通常需要根据主键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获取页面数据 → 判断是否为空 → 提交数据。
申明:代码图的代码来源于项目学习期间代码

根据主键ID修改已经存在的数据相关推荐

  1. java id主键_JAVA主键ID生成工具类:改自twitter的分布式ID算法snowflake

    祝大家新年快乐,有任何问题可与我联系: 关于snowflake算法的介绍和原理这里不过多说明了,网上有很多. 这里简单描述下SnowflakeUtil的优点: 1.做为底层工具使用,可用于数据库主键. ...

  2. mysql mybatis 主键id_MyBatis+MySQL 返回插入的主键ID

    需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法一 在mapper中指定keyProperty属性,示例如下: insert into user(use ...

  3. mysql插入成功返回主键_MyBatis + MySQL返回插入成功后的主键id

    这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增i ...

  4. Oracle添加主键、删除主键、修改主键

    一.前提 主键解释: 一个表的唯一关键字 比如一个学生表 学号不能重复且唯一 ,学号就是关键字,即为主键. 区别于外键: 外键就是跟其他表联系的字段 ,还是比如有一张学生表 还有一张选课表,这个时候要 ...

  5. Oracle使用序列触发器实现主键id自动增长

    记录一下oracle中的字段自增问题 在mysql中我们可以使用auto_increment来实现自动增长功能 而在oracle主键没有自动增长类型,所以一般使用序列产生的值作为某张表的主键,实现主键 ...

  6. MYSQL自增主键ID重置

    MYSQL在创建一个带有自增主键ID的表时,通常在删除数据时,导致自增主键不连续了.使用下面的SQL脚本可以重置主键. -- 1.重置已有数据主键 SET @rownum = 0; UPDATE ta ...

  7. Mybatis新增返回主键ID

    在做项目的过程中有时候难免会运用到新增一条数据并获取到新增的这条数据的主键ID,这样的一个功能,新增一条订单数据,并返回新增订单的ID.这样做的前提是数据的ID必须为自增. 我是用ssm框架做的项目, ...

  8. MySQL库表主键ID耗尽了,如何处理?

    大家好,我是后端研究所大白所长! 今天和大家聊一个有趣的话题: 假如MySQL建表时主键ID是int32且自增的,谁也没想到业务发展这么快,今天忽然发现ID耗尽了,各种报警要炸锅了,请求作为后端own ...

  9. python mysql批量insert数据、返回id_Python3 操作 MySQL 插入一条数据并返回主键 id的实例...

    Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据 #!/usr/bin/env python3 # -*- coding: UTF- ...

最新文章

  1. Windows Server 2008 R2 之十七WDS(部署服务)之一
  2. easyui-datagrid行数据field原样输出html标签
  3. 转;说说AngularJS中的$parse和$eval
  4. 稳扎稳打Silverlight(8) - 2.0图形之基类System.Windows.Shapes.Shape
  5. Android官方技术文档翻译——Gradle 插件用户指南(5)
  6. APE结合键盘控制角色运动 转
  7. 半小时训练亿级规模知识图谱,亚马逊这个 AI 框架要火!
  8. HttpClient 学习整理【转】
  9. Mpass – PHP做Socket服务的解决方案
  10. matlab 实现同态滤波算法 并于直方均衡化相比较 看看谁的效果更好
  11. JUCE框架教程(8)——DSP Module基础
  12. 怎么修改服务器玩家等级级上限,战神引擎服务端限制玩家最高等级教程
  13. nyoj 1275-导弹发射 //lis
  14. oppo reno5什么时候上市
  15. 【Nginx基础知识】
  16. 【多元统计分析】均值向量和协方差阵的检验——spss上机实验
  17. css中div的宽度和高度设置指的是什么
  18. SEO优化_网站诊断分析方法
  19. 量子计算机九章潘建伟,从墨子号到九章量子计算机,潘建伟如何从无到有建立我国量子优势...
  20. 【微信小程序】事件绑定

热门文章

  1. 那个站在科学与艺术路口撸码绘的女同学(二)
  2. 存量混战 一加如何打天下?
  3. 牌面”养成记9:打好牌,从做好这60件事开始[中]
  4. UE5学习笔记(三)——光线知识相关 基础蓝图事件
  5. 解决无耻迅雷在后台偷偷上传文件的一种方法
  6. 股票入门技巧-----股票开户
  7. 每周学一点 egret(4) EUI
  8. 列车节能优化软件V1.0
  9. Penetration Testing ***测试
  10. 风口上的科技服务——闯客网打造2018智能硬件服务共赢格局