开发工具与关键技术:VS JS
作者:宋永烨
撰写时间:2019/6/23
在项目的设计过程中,偶尔会出现需要回填信息(例如修改),特别是跨页面的回填,需要先获取到当前选中的数据的主键ID,传输到需要回填的页面,然后查询数据,最后回填.本文提供一种特殊的回填方法,但适用范围有限且仅适用与简单的数据量较少的回填
一、回填的准备
本回填的数据全部来源与视图层,所以需要先查询出数据,传输的数据由普通回填传输的主键变成了传输所有需要回填的数据,所以只适用与简单的回填且限制较多,一般用于当前页面也有回填,需要跨页面的回填的数据已经全被查询出来且可以直接通过视图层进行获取
当前页面回填的部分代码(由于代码较多,故只截取部分);
本文的当前页的回填通过框架的方法选中框架生成的表格回填中的行,然后回填数据到写好的表单中,
所以跨页面回填的数据便来源于此
二、特殊的回填的优势与不足
由于回填的数据全部来自与视图层,不走控制器,所以运行速度较快,且代码简单易懂,较为简短,实用性较为不错,可惜作用范围有限,不适用于大批量的数据回填,比如一次回填多条数据
本回填还有一个较为致命的缺席,适用的跨页面回填仅限于当前页面打开的其他页面
三、回填
本回填依赖于一个特殊的方法,parent(注,这是js的方法,不是jQuery的)
此方法的效果是获取父窗口,这也是为什么说,本方法仅适用于当前页面所打开的页面,因为如果不是当前页面打开的,选取不到父窗口,那本方法就无效
流程大致是,获取当前页面需要回填到父窗口即打开该页面的页面,选中需要回填的数据,然后通过选中父窗口中的需要回填到的单元格、下拉框等,最后在给一个关闭页面的方法即可,
业务的流程大致为,需要回填数据的页面,通过点击事件等方法打开其他页面,选中需要回填的数据,通过点击等方法进行回填到打开该页面的页面,并关闭页面(因为已经选中需要回填的数据,所以该页面已经不需要了,所以关闭该页面,最好连关闭判断都不要有)
本方法只是一个技巧,所以具体的代码或方法较为灵活,需要依托与使用者,以下介绍以下关于该方法的一些技巧
技巧一:
该方法属于js方法,切勿使用jQuery的方法,除非你可以将获取到的信息转换为jQuery对象,否则会获取不到信息
技巧二:
parent方法依托于window对象,选中页面的信息通过js的方法选中需要回填的对象,建议通ID选中(较为方便且不会出现重复)
总结:
此方法属于投机取巧的方法,初学者不建议使用,因为此回填不走控制器,所以最好还是先熟悉正常的跨页面回填再尝试使用本方法进行回填
本方法本质上只是将数据在视图层进行传递,所以运行速度还是会比较快的