在用报表工具设计报表时,使用参数控件时,有时我们希望部分参数控件在没满足条件时不显示,满足条件后再显示,接下来我就来教教大家怎么做!
表格软件如何根据条件控制参数控件是否显示
一:问题描述
在使用参数控件时,有时我们希望部分参数控件在没满足条件时不显示,满足条件后再显示,如下图效果:只有前面的下拉款选择了内容之后,后一层下拉框控件才显示出来:
二:解决方案
首先将被控制的控件初始化为不可见或者不可用,然后在条件控件上增加编辑结束事件,通过js脚本设置被控制控件可见或可用,对应的js方法如下:
setEnable(boolean):设置是否可用,true为可用,false为不可用;
setVisible(boolean):设置是否可见,true为可见,false为不可见;
三:示例
打开模板%FR_HOME%\WebReport\WEB-INF\reportlets\doc\parameter\MutiValue.cpt
我们用这个模板中的area作为条件控件,province作为被控控件来说明设置过程。
四:初始化被控控件为不可见
点击province控件,选择属性表>基本属性将可见勾选掉,如下图:
五:条件控件的事件设置
给area控件添加编辑后事件,调用JS方法将province控件设定为可见,具体的代码如下:
选择参数area的下拉框控件,选择属性表的事件面板,增加一个编辑结束事件,如下图:
图中的代码内容是:
其中代码为:
. var province=this.options.form.getWidgetByName("province"); var area=this.options.form.getWidgetByName("area"); . var thislen = this.getValue(area).length; . if(thislen) province.setVisible(true); . else alert("请选择地区");
日期控件校验JS
一:概述
内置参数查询界面当中可进行一些数据校验,例如有两个参数:开始日期和结束日期,下面我们要校验的是:开始日期与结束日期不能为空,结束日期必须在开始日期之后以及结束日期必须在开始日期后的某个时间段内,否则提示相关信息,对此可以在查询按钮中增加事件。下面介绍下具体的设置。
具体效果图如下:
步骤阅读
具体错误见效果图报错警告。
二:打开模板
打开模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Parameter\TimeScale\TimeScale.cpt。
如下图参数界面:
三:增加事件
给查询按钮增加点击事件,具体的JS代码如下:
var start = this.options.form.getWidgetByName("starttime").getValue(); var end = this.options.form.getWidgetByName("endtime").getValue(); if( start == "" || start==null){ //判断开始日期是否为空 alert("错误,开始时间不能为空"); //开始日期参数为空时提示 return false; }; if(end == "" || end==null){ //判断结束日期是否为空 alert("错误,结束时间不能为空"); //结束日期参数为空时提示 return false; }; if( start > end){ //判断开始日期是否大于结束日期 alert("错误,开始时间不能大于结束时间"); //开始日期大于结束日期时提示 return false; } var startdate = new Date(start); //将开始日期转化为Date型 var enddate = new Date(end); //将结束日期转化成Date型 var subdate = (enddate-startdate)/ (1000 *60 *60 *24); //将两个日期相减得出的毫秒数转化为天数 if(subdate>15){ //判断结束日期是否超过开始日期后15天 alert("错误,结束日期必须在开始日期15天之内"); //结束日期超过开始日期后的十五天时提示 return false; }
注:虽然参数控件中也可以设置校验,但是参数控件要点击控件后才能进行校验,因此参数界面的不能为空以及比较校验需要在查询按钮中设置。
四:效果查看
分页预览模板,选择开始时间和结束时间,使这两个日期之间相差超过15天,就会弹出上述对话框。