历史版本3 :JS实现填报联动自动生成默认值 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1、概述编辑
我们知道,在参数栏中很容易实现参数联动并且设置控件默认选择待选列表中的第一个值,在填报中也经常会用到控件联动,如果在填报页面中需要参数联动,并实现同样的选择后后面联动的单元格选择第1个值,如下图效果。如何实现呢。
2、解决思路编辑
在填报页面中,无法使用常规的数据集方式获取动态参数的变化,必须以sql函数来获取,并且通过JS方法对控件进行赋值。
3、解决过程编辑
第1步、新建模板在B1,D1,F1中添加下拉框控件
第2步,设置单元格公式
B1:=sql('FRDemo','SELECT 货主地区 FROM 订单',1,1)
D1:=sql('FRDemo','SELECT 货主省份 FROM 订单 where 货主地区="'+B1+'"',1,1)
F1:=sql('FRDemo','SELECT 货主城市 FROM 订单 where 货主地区="'+B1+'" and 货主省份="'+D1+'"',1,1)
第3步,设置下拉框数据字典,如下图
三个控件仅实际值不同
B1:=sql('FRDemo','SELECT 货主地区 FROM 订单',1)
D1:=sql('FRDemo','SELECT 货主省份 FROM 订单 where 货主地区="'+B1+'"',1)
F1:=sql('FRDemo','SELECT 货主城市 FROM 订单 where 货主地区="'+B1+'" and 货主省份="'+D1+'"',1)
第4步,设置B1,D1下拉框控件编辑结束事件
注意需要定义参数row
B1中的JS代码为
var area=this.getValue();//获取地区
setTimeout(function(){
//var province=contentPane.getCellValue('E'+row);//获取省份
var province;
var city;
var sql='SELECT 货主省份 FROM 订单 where 货主地区="'+area+'"';
province=FR.remoteEvaluate("=sql('FRDemo','"+sql+"',1,1)");
//选择第一个省份
contentPane.curLGP.setCellValue('D'+row,null,province);
var sql1='SELECT 货主城市 FROM 订单 where 货主地区="'+area+'" and 货主省份="'+province+'"';
city=FR.remoteEvaluate("=sql('FRDemo','"+sql1+"',1,1)");
//选择第一个城市
contentPane.curLGP.setCellValue('F'+row,null,city);
},200);
D1中的JS代码为
var province=this.getValue();
var city;
setTimeout(function(){
var area=contentPane.curLGP.getCellValue('B'+row);
var sql='SELECT 货主城市 FROM 订单 where 货主地区="'+area+'" and 货主省份="'+province+'"';
city=FR.remoteEvaluate("=sql('FRDemo','"+sql+"',1,1)");
//选择第一个城市
contentPane.curLGP.setCellValue('F'+row,null,city);
},300);
第5步,保存,进行填报预览
保存,进行填报预览,最终的效果如上