[]
        
在线Demo 免费试用
(Showing Draft Content)

用户/组织上下文信息

1. 功能概述

设计报表时,经常需要根据用户的身份来决定显示哪些数据,即根据用户的某些属性值(用户/组织上下文信息)进行数据过滤。

接下来通过示例为您介绍如何实现根据用户/组织信息上下文进行数据过滤。

2. 使用用户信息上下文过滤数据

2.1 添加一个用户扩展属性“ 大区 ”,并将admin的“ 大区 ”属性值改为“ 东北 ”。具体操作方法请见扩展属性

image2020-11-2_14-33-25.png


2.2 新建报表,选择WynDemoData数据源创建内嵌数据集。

将扩展属性“ 大区 ”以 {Usercontext.GetValue("大区")} 的形式传递给数据集查询参数1,然后将查询语句设置为“ select * from 销售明细 where 销售大区=@查询参数1 ”。如下图所示。

image2020-11-2_14-54-56.png

type=info

提示

有关用户信息上下文更多介绍,详见用户/组织上下文

2.3 设计报表内容。比如我们使用表格组件,并绑定数据字段。

image2020-11-2_14-56-29.png


2.4 预览报表。当前用户扩展属性“ 大区 ”的值为“ 东北 ”,因此报表将销售大区为东北的数据过滤出来。

image2020-11-2_14-56-54.png

3. 使用组织信息上下文过滤数据

3.1 添加一个组织模型“ 大区组织 ”。

image2022-4-15_16-38-41.png


新建一个组织O1,并将O1组织的“ 大区组织 ”属性值设置为“ 东北 ”。

image2022-4-15_16-31-12.png


然后将admin加入到O1 组织中。

image2022-4-15_16-40-18.png


3.2 新建报表,选择WynDemoData数据源创建内嵌数据集。

将组织属性“ 大区组织 ”以 {Usercontext.GetValue("tenant$大区组织")} 的形式传递给数据集查询参数1,然后将查询语句设置为“ select * from 销售明细 where 销售大区=@查询参数1 ”。如下图所示。

image2022-4-15_16-41-50.png

type=info

提示

有关组织信息上下文更多介绍,详见组织属性和组织信息上下文

3.3 设计报表内容。比如我们使用表格组件,并绑定数据字段。

image2020-11-2_14-56-29.png


3.4 预览报表。当前用户组织属性“ 大区组织 ”的值为“ 东北 ”,因此报表将销售大区为东北的数据过滤出来。

image2020-11-2_14-56-54.png

4. 多值的用户/组织信息上下文用法

在实际使用中,如遇扩展属性或组织属性为多值时,那么需要在表达式中添加“s”,例如 {Usercontext.GetValues("大区")} 或 {Usercontext.GetValues("tenant$组织属性")}。

同时,查询语句中也不能再用=@查询参数,而需要使用NOTIN/IN(@查询参数1)。

下面是一个多值用户信息上下文的使用示例。

扩展属性“大区”是一个多值扩展属性。

image

admin 的扩展属性“大区”值为东北和西北。

image

那么在报表中添加内嵌数据集时,就必须如下图所示进行数据查询。

在查询参数调用用户信息的表达式中添加“s”,在查询语句中使用NOTIN/IN(@查询参数1)的形式。

image


这样创建报表后预览数据就可以根据当前用户的扩展属性值显示数据。

如admin 的扩展属性为东北和西北,那么就只能看到东北和西北的数据。

image