【报表-表达式】如何使用表格动态显示行列
本帖最后由 Felix.Li 于 2023-7-4 14:10 编辑大家在报表设计过程中,有时根据需求需要对某些列进行隐藏,下面就来给大家介绍一下如何动态显示行列。
1、用户自定义表格列
1)新建数据源及数据集,新建报表,并创建表格组件,绑定数据字段,如下图示:
https://help.grapecity.com.cn/download/attachments/57497712/image2020-11-5_15-1-43.png?version=1&modificationDate=1614138546000&api=v2
2)添加一个报表参数,并按下图所示编辑参数设置项。
3)单击表格上方对应的操作块,选中表格列,然后在属性设置面板中找到“显示选项”下的“隐藏”设置项,单击右侧的小方块,然后选择“表达式”。
4)在表达式编辑器中输入表达式: {IIF(Join(@P1, ",").IndexOf("订单编号") >= 0, false, true)}。
表达式含义:先将参数P1转换成字符串,然后检测是否包含“订单编号”,如果包含则返回“False”,如果不包含则返回“Ture”。
由于表达式是添加在了“隐藏”设置项中,因此如果返回“False”也即不隐藏,返回“Ture”则隐藏。
5)同理,为其他的表格列的“隐藏”设置项添加表达式,并将表达式中 IndexOf的参数值更换为表格列对应的字段名。
6)预览,根据参数可以动态显示表格对应列。
2、根据用户权限动态显示表格列
1)新建数据源及数据集,新建报表,并创建表格组件,绑定数据字段,如下图示:
https://help.grapecity.com.cn/download/attachments/57497712/image2020-11-5_15-13-58.png?version=1&modificationDate=1614138546000&api=v2
2)比如我们需要动态控制“产品单价”数据列,选中表格列,然后打开表格列“隐藏”属性的表达式编辑器。
3)在表达式编辑器中输入表达式:{IIF(Join(UserContext.GetValues("role"), ",").IndexOf("administrator") >= 0, false, true)} 表达式含义:先获取到当前登录用户的角色值并将其转换成字符串,然后检测是否为“administrator”,如果是则返回“False”,如果不是则返回“Ture”。
由于表达式是添加在了“隐藏”设置项中,因此如果返回“False”也即不隐藏,返回“Ture”则隐藏。
4)预览报表。当前登录用户为administrator,因此可以看到“产品单价”列;如将文档分享给其他角色并切换至其他角色的用户登录,则不能看到。
下面附上我的demo,欢迎大家一起交流哦!
页:
[1]