有好多上报模板都需要用到导入这个功能,但是根据导入这个功能导入Excel,然后点击提交,数据进到库里就会变成页面上显示的内容,比如:
这个是我做的一个模板,在省份这个字段中导入了几个值,点击提交之后,数据库中省份这个字段下面的值就会变为广东什么的,但是实际情况大部分不会是这样,一般来说都是放在数据字典里,数据表中只是存编码,比如广东我们数据库的编码就是440104。还有可能比如这里我需要的省份,但是由于工作中的失误导致,这个Excel中有个值写的不是省份而是区,这样的话如果不做判断也会入库,倒是会导致数据错误。
根据这个情况,我想了一个解决方法:
首先定义一个自定义按钮,然后设置为提交
然后编辑他的自定义事件。
- var t =new Array(); ; //创建一个数组
- for(var i =0;i<$("td[col=0]").length;i++){
- t[i]=$("td[col=0]").eq(i).text();
- }
- //把需要校验的单元格的值存到数组中
- var s=a;//查询数据库获取到需要比较的列
- for(i=1;i<s.length;i++) {
- if(jQuery.inArray(t[i].toString(),s)==-1)
- {
- alert(t[i]+"是第"+i+"个");
- return;
- }
- else
- {
- alert("没有错了");
- _g('${sessionID}').verifyAndWriteReport();
- return;
- }
- } //循环判断页面上这一列和数据库中的字段是否相同
复制代码 在这里还需要添加一个参数
这个参数我获取的是我数据字典中的值:sql("test","SELECT name FROM [dbo].[img]",1)
直接获取的是一列,返回一个数组。
这样如果导入之后这一列有值和我数据库中字典表中的值不一致就会给出提示。
接下来我们要修改填报属性
因为上面已经把单元格的值都规范了,所以这里直接获取到单元格的值,然后根据单元格的值在字典表中查询出他对应的编码值就可以了
比如我这里写的:sql("text","SELECT id FROM img where name='"+a2+"'",1,1)
由于我的js水平不是很高,如果大家有更好的解决方法可以和我联系一起研究,由于工作的原因,导入这个功能特别常用,但是目前总是感觉这个功能不是很稳定还是需要优化。
比如刚刚就出现了一次表头是富文本,结果这一列的数据就导不进来。
编辑于 2017-12-19 17:47
|