PowerApps/Dataverse中基于多对多关系筛选画廊事件方法
Canvas应用垂直画廊多对多关系筛选实现方案
适用场景
已完成如下配置的Dataverse画布应用:
- 已搭建独立Canvas屏幕,完成
Employee(员工)表与Department(部门)表的多对多关系配置 - Event屏幕已配置对接Dataverse Event表的提交表单,表单内通过下拉框选择单个关联部门
- 需要配置屏幕内垂直画廊的
Items属性,实现登录员工仅可见自己所属部门关联的所有事件
预期匹配规则
- Pedro隶属于财务部、产品部,画廊仅展示两个部门关联的事件
- Aiko隶属于计算机工程系,画廊仅展示计算机工程系关联的事件
- Suraj隶属于产品部、机械工程系,画廊仅展示两个部门关联的事件
- Ahlem隶属于财务部,画廊仅展示财务部关联的事件
实现代码
直接将以下公式配置到垂直画廊的Items属性即可:
With( { // 第一步:取出当前登录员工所属的所有部门ID MyDeptIds: Distinct( Filter( Department, 'Employee(s)'.email = User().Email ), id department ) }, // 第二步:筛选关联部门属于自己所属部门范围的事件 Filter( Event, department.id department in MyDeptIds ) )
配置提示:如果你的环境中表、字段使用中文显示名,直接替换公式中对应的英文名称即可,例如将
Department替换为部门、Event替换为事件,字段名匹配实际配置的显示名即可正常运行。
逻辑说明
- 利用Dataverse多对多关系自动生成的
'Employee(s)'隐藏关联列,直接反查和当前登录用户匹配的部门记录,不需要手动查询中间关联表 - 提前用
Distinct提取部门主键做去重,减少后续筛选的计算开销,提升画廊加载速度 - Event表的
department是Lookup类型字段,通过department.id department直接取关联部门的主键做匹配,比取部门名称等其他字段匹配的准确率、性能都更高
内容的提问来源于stack exchange,提问作者JustAnIntern
相关产品推荐
相关产品推荐

