在报表的使用过程中,有一种应用场景:在使用者的做查询条件时,根据下拉框或填写的值,自动显示/隐藏下一个筛选框,例如选了省份和城市之后,再显示区县的筛选框,如下图:
1、报表界面设计:
其中,“区县”和对应的下拉框,需要预设置为不可见。
2、javascript事件编辑
在城市下拉框中,设置“编辑后”事件如下:
代码如下:
var form = this.options.form;
var thislen = this.getValue().toString().length;
if(thislen) {
form.getWidgetByName("qx").visible();//可见
form.getWidgetByName("type3").visible();//可见
}else{
form.getWidgetByName("qx").invisible();//不可见
form.getWidgetByName("type3").invisible();//不可见
}
其中,“qx”为区县下拉框,“type3”为“区县”标签。
3、效果图:
如上,在报表制作时,通过设置下拉框“城市”编辑后的javascript事件,实时获取“城市”中是否有值,从而控制下拉框“区县”是否可见,即可实现根据下拉框A控制填写框B是否可用/可用的效果。
其中,在报表面板和参数面板,实现JS控制事件需要稍做修改:
1、在参数面板中,JS事件为:this.options.form.getWidgetByName("open").setVisible(true);
2、在报表面板中,JS事件为:contentPane.getWidgetByName("open").setVisible(true);
| setEnable(boolean):设置是否可用,true为可用,false为不可用; | ||||
| setVisible(boolean):设置是否可见,true为可见,false为不可见。 |
报表面板设置控件是否可见/可用,可参考:
https://blog.csdn.net/wang1qqqq/article/details/85601536
当然,这种效果的实现方案有多种,如果
1、编辑后事件:通过A控件,JS设置B可见/可用;
2、初始化事件:通过B控件,获取A是否有值,设置B可见/可用。
具体采用方法就见仁见智了。