在填报报表界面,也希望实现如下图的联动效果,根据前一个控件的值,显示不同的项:
其实现方法和参数联动是一样的,通过定义数据集并增加where过滤条件实现,或者使用SQL()函数实现。
如果填报联动的数据需要查询已有的数据集,可以使用ds1.select()函数实现。
在填报界面中,通过单元格或控件名(包括参数控件与填报控件)都可以来引用控件的值。
3.1 打开模板
打开模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\FreeForm\FreeForm.cpt。
3.2 地区城市下拉框联动设置
方法一:通过定义数据集实现
增加数据集ds2,其SQL语句为:SELECT 城市 FROM 雇员 where 地区='${C9}',通过where条件限制城市的数据是C9单元格选择后的值。
修改城市下拉框控件的数据字典为数据查询,数据集选择刚刚定义的ds2,实际值与显示值都选择城市,如下图:
注:填报的控件除了可以根据单元格进行联动,也可以根据参数或者填报的控件名进行联动,如C9单元格的控件名称为地区,则将ds2修改为:SELECT 城市 FROM 雇员 where 地区='${地区}'也可达到同样的联动效果。
注:自APPv9.3.27版本开始,移动端只支持使用单元格作为参数名来联动,不支持控件名作为参数来联动。
方法二:使用SQL()函数实现
修改城市下拉框控件的数据字典的类型设置为公式,实际值输入公式:SQL("FRDemo","select 城市 from 雇员 where 地区='"+C9+"'",1),显示值输入公式:$$$,如下图:
注:SQL()函数参考文档SQL函数。
方法三:使用ds1.select()函数实现
修改城市下拉框控件的数据字典的类型设置为公式,实际值输入公式:ds1.select(城市,地区=C9),显示值输入公式:$$$,如下图:
注:ds1.select()函数参考文档ds1.select()函数的使用。