JS实现隐藏tab块标题

编辑
文档创建者:cherishdqy (66470 )     浏览次数:4395次     编辑次数:11次     最近更新:jiangsr 于 2018-05-29     

目录:

1. 描述编辑

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

2. 思路编辑

通过js隐藏tab标题。

注:设计器自带更简便的方法,可通过调整tab控件的属性来实现效果,详情请参考:tab布局

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

3. 操作步骤编辑

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

1)打开模板

打开模板 %FR_HOME%\WebReport\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%\WebReport\WEB-INF\reportlets\doc\JS\填报预览JS实例\12-JS实现隐藏tab块标题-示例一.frm
2)示例二
模板效果在线查看请点击:JS实现隐藏tab块标题-示例二.frm
已完成的模板,可参见:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\JS\填报预览JS实例\12-JS实现隐藏tab块标题-示例二.frm


附件列表


主题: 二次开发
如果您认为本文档还有待完善,请编辑

文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

此页面有帮助吗?