1. 问题描述编辑
用户希望可以自定义设置tab的展现与隐藏,比如不同用户可以查看不同的tab块,或者隐藏一些无关tab页的内容,该如何实现呢?
注:也可通过调整tab控件的属性来实现效果,详情请参考:tab布局
2. 解决方案编辑
打开模板 %FR_HOME%\WebReport\WEB-INF\reportlets\demo\analytics\financial2\生产库存分析.frm
2)添加初始化事件在决策报表右上角属性中,选择tabpane0控件,添加初始化事件,如下所示:
jar包在2018-1-24之前,所要添加的js如下:
而jar包为2018-1-24及之后,隐藏tab标题的js代码如下:
注:是添加到tabpane块组件的初始化事件,不是tab块里面的每个tab页签的初始化事件。
3)效果预览保存模板,预览效果如下:
2.2 示例二(隐藏部分tab标题)
1)添加初始化事件
以上个模板为例,修改初始化事件,如下所示:
注:
要尽量避免重命的情况!若存在重名的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这种报表块组件的隐藏与否。
2)效果预览
保存模板,预览效果如下: