1. 概述
1.1 预期效果在参数面板中实现可切换的 Tab 按钮,点击这些按钮可以切换数据查询结果,效果如下图所示: 1.2 实现思路通过 label 标签画出一个一个 Tab 块; 通过 JS 实现点击 label 给某个文本框赋值(隐藏不可见); 赋值变化后进行查询。 2. 示例
2.1 准备数据新建普通报表,新建数据查询数据集 ds1,SQL 语句为:
- select
- case
- when '${wbk}'= '0' then "第一个"
- when '${wbk}' = '1' then "第二个"
- when '${wbk}' = '2' then "第三个"
- when '${wbk}' = '3' then "第四个"
- when '${wbk}' = '4' then "第五个"
- when '${wbk}' = '5' then "第六个"
- else null end as 结果
复制代码
2.2 设计表格设计简单的表格,参数面板拖入 6 个 label 控件,分别命名为 label0~lable5 ,控件值分别写入1~6。 再拖入一个文本框控件,默认不可见,命名为 wbk,控件值写入 1,如下图所示:
2.3 添加事件给参数面板添加初始化后事件,如下图所示:
JavaScript 代码如下: - timer = setInterval(function() {
- if ($("[widgetname^='LABEL']")) {
- clearInterval(timer);
- } //1.替代延迟加载setTimeout()方法,用定时器的方式来实现,当label元素出现则清除定时器,否则每隔15ms执行代码
- $("[widgetname^='LABEL']").css({
- "border": "1px solid #e8ebf1"
- })//2.给LABEL0~LABEL5加边框
- $("[widgetname^='LABEL']:first").css({
- "borderRadius": "4px 0 0 4px"
- })//3.给LABEL0(第一个label)加左边圆角
- $("[widgetname^='LABEL']:last").css({
- "borderRadius": "0 4px 4px 0"
- })//4.给LABEL5(最后一个label)加右边圆角
- $("[widgetname^='LABEL']").find("td .fr-label").css({
- "color": "#555555",
- })//5.给LABEL0~LABEL5设置字色,直接在注释第2步中加color是不行的
- var num = "";
- $("[widgetname^='LABEL']").click(function() {
- $(this).css({
- border: "1px solid #1890ff",
- backgroundColor: "#1890ff"
- }).siblings().css({
- border: "1px solid #e8ebf1",
- backgroundColor: "transparent"
- })//6.给点击的LABEL加边框和背景样式,其他兄弟LABEL加另外一种边框和背景样式
- num = $(this).attr("widgetname").replace("LABEL", "");
- $("[widgetname^='LABEL'] td .fr-label").css({
- "color": "#555555"
- });//7.给所有LABEL字色设置样式
- $("[widgetname^='LABEL'] td .fr-label").eq(num).css({
- "color": "white"
- });//8.给点击了的LABEL设置另一个字体颜色;不用$("this").sibings()方式
- var a = _g().parameterEl.getWidgetByName("wbk").getValue(); //获取文本框的
- var b = _g().parameterEl.getWidgetByName("wbk").setValue(num);//给文本框赋值
- if (b !== a) {
- _g().parameterCommit();
- }//如果文本框的值和上次不同,则进行查询操作
- })
- }, 15)
复制代码 2.4 效果预览保存模板,点击分页预览,效果如下图所示:
注:不支持移动端。 3. 模板下载已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\参数界面JS实例\JS实现参数面板Tab切换按钮.cpt 模板见附件
编辑于 2020-12-17 16:29
|