历史版本15 :JS实现隐藏Tab页 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

用户希望可以自定义设置 Tab 的展现与隐藏,比如不同用户可以查看不同的 Tab 块,或者隐藏一些无关 Tab 页的内容,该如何实现呢?


2. 思路编辑

通过 JS 隐藏 Tab 标题。

注:通过 JS 的方法,可能导致tab内部组件不能根据正确的宽高进行自适应,因此建议通过设计器自带属性——设置tabpane 高度为 的方法,来实现隐藏。详情请参考:Tab布 局 第 3.6章。

注:此功能不支持移动端和 H5 方式预览。


3. 操作步骤编辑

3.1 示例一(隐藏整个 Tab 标题)

1)打开模板

打开模板 %FR_HOME%\webapps\webroot\WEB-INF\reportlets\demo\analytics\financial2\生产库存分析.frm

2)添加初始化事件

在决策报表右上角控件设置中,选择 tabpane0 控件,添加初始化事件,如下所示:

222

JAR 包在 2018-1-24 之前,所要添加的js如下:

$('div:lt(1)',this.element.parent()).hide();//隐藏 Tab 标题

而 JAR 包为 2018-1-24 及之后,隐藏 Tab 标题的 JS 代码如下:

this.element.parent().hide();

注:是添加到 tabpane 块组件的初始化事件,不是 Tab 块里面的每个 Tab 页签的初始化事件。

3)效果预览


保存模板,预览效果如下:

222


3.2 示例二(隐藏部分 Tab 标题)

1)添加初始化事件

以上面的模板为例,修改初始化事件,如下所示:

222
JS 代码如下:

this.options.form.getWidgetByName("tabpane0").setTabVisible("tab1", false);

注:

要尽量避免重命的情况!若存在重名的 Tab,页面初始化的时候,后加载的 Tab 会覆盖先加载的 Tab,所以 JS 里获取到的,可能并不是预期要处理的 Tab。比如:模板里有两个 tabpane0 和 tabpane1,页面加载的时候 tabpane1 是后加载的,那么你通过 this.options.form.getWidgetByName("tabpane0").setTabVisible("tab2", false);获取到的 Tab2,其实最后会是 tabpane1 里的 Tab2,前面即使写获取的控件名为 tabpane0 也是无效的。

另外,用传统的写法是不支持 Tab 隐藏的,比如:this.options.form.getWidgetByName("Tab0").setVisible();,这种传统写法只适合用于控制组件,比如 report0 这种报表块组件的隐藏与否。

注:当模板导出时,被隐藏的 Tab 不会被导出!

2)效果预览

保存模板,预览效果如下:

222


4. 预览效果编辑

4.1 PC 端预览效果

示例一:

222

示例二:

222


4.2 移动端预览效果

注:不支持移动端。


5. 已完成模板编辑

1)示例一

模板效果在线查看请点击:JS 实现隐藏 Tab 块标题-示例一.frm

已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表单JS实例\12-JS实现隐藏tab块标题-示例一.frm

右击存储模板

2)示例二

模板效果在线查看请点击:JS 实现隐藏 Tab 块标题-示例二.frm

已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表单JS实例\12-JS实现隐藏tab块标题-示例二.frm

右击存储模板