1. 概述
1.1 问题描述
页签式报表的需求,即需要点击某页签时,参数面板中的部分参数隐藏。
1.2 解决思路在 body 组件上添加初始化后事件,在 JS 中使用 setTimeout 函数来监听页签的事件状态,因为无法获取页签。
所以这里通过 jQuery 类名选择器,我们利用 eq 选择到我们的页签控件 绑定 click 事件。 2. 示例
2.1 添加数据集
选择文件>新建决策报表,添加数据集 ds1: SELECT * FROM S订单 2.2 添加参数1)点击模板>模板参数,新增两个参数,分别命名为订单 ID 和运货商,如下图所示:
2)将参数面板拖入报表主体,点击参数面板空白处,在设计器右侧的控件设置中,点击全部添加:
2.3 添加 Tab 标签将 Tab 块拖入报表主体,并新增一个 Tab 标签页:
2.4 添加初始化后事件1)这里要实现运货商控件在点击第二个 Tab 标签页时隐藏,点击第一个 Tab 标签页时出现。 右上角选中 body 控件,添加一个初始化后事件:
JS 代码如下: - setTimeout(function() {
- $(".fr-widget-click").eq(2).bind("click", function() {
- $("div[widgetname$='运货商']").show();
- });
- $(".fr-widget-click").eq(3).bind("click", function() {
- $("div[widgetname$='运货商']").hide();
- });
- }, 100);
复制代码
注:若控件名为英文名,则需要大写,否则不能识别。 2) 对于使用其他样式模板的 tabpane ,上面的方式不再适用,因为其他样式模板使用 canvas 绘制,没有对应的 dom 元素,可以使用以下方案替代 在 tabpane 上添加tab切换事件,如下所示:
JS 代码如下: - var tabpane = this.getWidgetByName("TABPANE0");
- switch(tabpane.mouseInTab){
- case 0:
- $("div[widgetname$='运货商']").show();
- break;
- case 1:
- $("div[widgetname$='运货商']").hide();
- break;
- default:
- break;
- }
复制代码
3. 预览效果PC 端预览效果如下图所示
注:不支持移动端。 4. 已完成模板已完成模板请参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\22-JS实现切换tab显示或隐藏参数面板上的控件.frm 模板下载见附件
编辑于 2020-12-24 16:37
编辑于 2020-12-24 16:37
|