历史版本1 :JS实现填报联动自动生成默认值 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

1、概述编辑

我们知道,在参数栏中很容易实现参数联动并且设置控件默认选择待选列表中的第一个值,在填报中也经常会用到控件联动,如果在填报页面中需要参数联动,并实现同样的选择后后面联动的单元格选择第1个值,如下图效果。如何实现呢。


222

2、解决思路编辑

在填报页面中,无法使用常规的数据集方式获取动态参数的变化,必须以sql函数来获取,并且通过JS方法对控件进行赋值。


3、解决过程编辑

以模板%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Parameter\ParaNull\ParaNull.cpt为例

打开模板

第1步、在C7,E7,G7中添加下拉框控件

222

第2步,设置单元格公式

C7:=sql('FRDemo','SELECT 货主地区 FROM 订单',1,1)

E7:=sql('FRDemo','SELECT 货主省份 FROM 订单 where 货主地区="'+C7+'"',1,1)

G7:=sql('FRDemo','SELECT 货主城市 FROM 订单 where 货主地区="'+C7+'" and 货主省份="'+E7+'"',1,1)


第3步,设置下拉框数据字典,如下图

222

三个控件仅实际值不同

C7:=sql('FRDemo','SELECT 货主地区 FROM 订单',1)

E7:=sql('FRDemo','SELECT 货主省份 FROM 订单 where 货主地区="'+C7+'"',1)

G7:=sql('FRDemo','SELECT 货主城市 FROM 订单 where 货主地区="'+C7+'" and 货主省份="'+E7+'"',1)


第4步,设置C7,E7下拉框控件编辑结束事件

定义参数row

C7中的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('E'+row,null,province); var sql1='SELECT 货主城市 FROM 订单 where 货主地区="'+area+'" and 货主省份="'+province+'"'; city=FR.remoteEvaluate("=sql('FRDemo','"+sql1+"',1,1)"); //选择第一个城市 contentPane.curLGP.setCellValue('G'+row,null,city); },200);


E7中的JS代码为

var province=this.getValue(); var city; setTimeout(function(){ var area=contentPane.curLGP.getCellValue('C'+row); var sql='SELECT 货主城市 FROM 订单 where 货主地区="'+area+'" and 货主省份="'+province+'"'; city=FR.remoteEvaluate("=sql('FRDemo','"+sql+"',1,1)"); //选择第一个城市 contentPane.curLGP.setCellValue('G'+row,null,city); },300);

第5步,保存,进行填报预览

为了方便查看效果,可以直接设置显示控件


222

最终的效果如下图