Power Apps表单依赖字段配置异常:多选操作无法显示全部关联区域
解决Power Apps中多选操作时无法显示全部关联区域的问题
我在Power Apps中创建的表单需要展示Operations字段选中的所有操作对应的全部区域,但当前Zones组合框仅能显示第一个选中操作的关联区域。目前使用的Zones组合框Items属性代码如下:
If( ddselection.SelectedText.Value = "Zones", Switch( First(cboperations.SelectedItems).Value, "Operation 1", ["O1Z1", "O1Z2", "O1Z3"], "Operation 2", ["O2Z1", "O2Z2", "O2Z3", "O2Z4", "O2Z5"], "Operation 3", ["O3Z1", "O3Z2", "O3Z3", "O3Z4"], [] ), [] )
问题原因
代码中使用First(cboperations.SelectedItems).Value仅获取了第一个选中的操作项,因此多选时无法遍历所有选中的操作并关联对应的区域。
解决方案
修改代码,遍历所有选中的操作项,将每个操作对应的区域数组合并为一个完整列表:
基础版(保留所有区域,含重复)
If( ddselection.Selected.Value = "Zones", // 替换已弃用的SelectedText.Value为Selected.Value Ungroup( ForAll( cboperations.SelectedItems, {Zones: Switch( Value, "Operation 1", ["O1Z1", "O1Z2", "O1Z3"], "Operation 2", ["O2Z1", "O2Z2", "O2Z3", "O2Z4", "O2Z5"], "Operation 3", ["O3Z1", "O3Z2", "O3Z3", "O3Z4"], [] ) } ), "Zones" ), [] )
去重版(移除重复区域)
如果不同操作存在重复的区域,可添加Distinct函数去重:
If( ddselection.Selected.Value = "Zones", Distinct( Ungroup( ForAll( cboperations.SelectedItems, {Zones: Switch( Value, "Operation 1", ["O1Z1", "O1Z2", "O1Z3"], "Operation 2", ["O2Z1", "O2Z2", "O2Z3", "O2Z4", "O2Z5"], "Operation 3", ["O3Z1", "O3Z2", "O3Z3", "O3Z4"], [] ) } ), "Zones" ), Value ).Value, [] )
代码说明
ForAll(cboperations.SelectedItems, ...):遍历所有选中的操作项,为每个操作返回对应的区域数组Ungroup(..., "Zones"):将多个区域数组合并为一个一维列表Distinct(..., Value).Value:移除列表中的重复区域(可选)- 替换
SelectedText.Value为Selected.Value:SelectedText是Power Apps旧属性,官方推荐使用Selected.Value获取下拉框选中值
内容的提问来源于stack exchange,提问作者Syed Rehan Ali
相关产品推荐
相关产品推荐

