概览
内容工具
一般情况下,报表的组件是固定的,但也有一些情况需要动态的显示组件。比如以下两种场景:
下面为您分别介绍这两种动态显示组件效果在报表中的实现方法。
(1) 新建报表,添加基于WynDemoData 的数据集,并创建如下图表和表格。
(2) 添加一个报表参数,并按下图所示编辑参数设置项。
(3) 选中图表组件,在属性设置面板中找到“显示选项”下的“隐藏”设置项,单击右侧的小方块,然后选择“表达式”。
(4) 在表达式编辑器中输入表达式: {IIF(Join(@P1, ",").IndexOf("图表") >= 0, false, true)}。
表达式含义:先将参数P1转换成字符串,然后检测是否包含“图表”,如果包含则返回“False”,如果不包含则返回“Ture”。
由于表达式是添加在了“隐藏”设置项中,因此如果返回“False”也即不隐藏,返回“Ture”则隐藏。
(5) 同理,在表格的属性设置中找到“隐藏”设置项,然后为其添加表达式: {IIF(Join(@P1, ",").IndexOf("表格") >= 0, false, true)}。
(6) 预览报表,可见已经实现组件的动态控制效果。
根据用户权限控制组件显示情况的做法与以上通过参数面板进行控制的原理相同,都是在组件的“隐藏”设置项中添加表达式,然后通过表达式来实现动态控制。
具体做法如下:
选中表格组件,在属性设置面板中找到“显示选项”下的“隐藏”设置项,单击右侧的小方块,然后选择“表达式”。
在表达式编辑器中输入表达式:{IIF(Join(UserContext.GetValues("role"), ",").IndexOf("administrator") >= 0, false, true)}。
表达式含义:先获取到当前登录用户的角色值并将其转换成字符串,然后检测是否为“administrator”,如果是则返回“False”,如果不是则返回“Ture”。
由于表达式是添加在了“隐藏”设置项中,因此如果返回“False”也即不隐藏,返回“Ture”则隐藏。
(4) 预览报表。当前登录用户为administrator,因此可以看到表格组件;如将文档分享给其他角色,并切换至其他角色的用户登录,则只能看到图表组件。也即开篇时图2 的显示效果。