FineReport报表工具内置JS的使用之三
时间:2010-08-29 来源:blueideas
文章转自:http://reportblog.cn/archives/927
参数控件触发事件
参数控件的取值与置数
参数界面中,最常见的就是获取参数的值进行运算或者将其作为另一个参数的判断依据,在FineReport报表工具网页脚本中,也提供了获取参数控件实际值,显示值并给参数置数的方法。
//取当前控件的实际值
var [ParaValue] = this.getValue();
//通过参数控件名称来获取参数控件实际值
var [ParaValue] = this.options.form.getWidgetByName("[ParaName]").getValue();
//通过arguments[i]获取当前参数控件显示值
var [DisplayedValue] = arguments[0];
//通过控件A获取控件B的显示值
var [DisplayedValue] = this.options.form.getWidgetByName("[ParaName]").options.items[0].text;
//获取某个参数控件,并给其置数(实际值)
var [Para] = this.options.form.getWidgetByName("[ParaName]");
[Para].setValue([Value]);
实例:
该实例通过添加参数控件的编辑后事件来实现用一个参数控制另一个参数,如用参数username来对state置数,username为下拉框自定义的几个用户名,state为单选按钮组表示状态1和2。当username有值时,state的状态置为1否则置为2。
1. 模板设计
1.1 新建报表
1.2 定义参数
在菜单栏中选择报表|报表参数,打开参数定义面板,定义参数state和username,如下图
1.3 参数设计
打开参数设计界面,参数控件布局如下
l username控件类型为下拉框,数据自定义,如图
l state控件类型选择单选按钮组,数据也为自定义,如图
1.4 添加事件
在username的事件编辑中添加编辑后事件,JS代码如下
var state= this.options.form.getWidgetByName("state");
var username = this.options.form.getWidgetByName("username").getValue();
if (!username){
state.setValue(2);
}else{
state.setValue(1);
}
该段代码是用来对state参数置数,当username为空时,!username为真,此时将state置数为2,否则当username有值时,将state置数为1,如图所示
2. 保存并预览
点击设计器分页预览,当username有值时,state置为1
注意:state无法通过username置数为0,JS里面,state为0,默认返回false
且一个控件无法对另一个控件的显示值进行置数