PowerApps中如何将SharePoint多选列值存入集合并生成去重下拉
实现PowerApps中仅显示已存在去重城市的Combobox
要生成仅包含记录中已出现的去重城市的下拉框,确实需要遍历所有记录——因为每条记录的多选Choice列是独立的子集合,必须逐个展开才能提取所有城市值。
正确实现代码
可以用Ungroup展开所有多选值,再通过Distinct去重,一步完成集合创建:
ClearCollect(colUniqueCities, Distinct( Ungroup( ForAll(IncidentLog, {City: Cities}), "City" ), Value ) )
代码解释
ForAll(IncidentLog, {City: Cities}):遍历IncidentLog列表的每条记录,把每条记录的多选Cities列包装成名为City的字段,得到一个包含多个子集合的集合Ungroup(..., "City"):把所有子集合展开为单条记录的集合,每条记录对应一个具体的城市值Distinct(..., Value):对展开后的集合去重,最终得到唯一的城市列表
你之前代码的问题
ClearCollect(colCities,IncidentLog.Cities):直接取列会得到多个未展开的子集合,无法直接去重Collect(colCities,ForAll(IncidentLog,{CityNames: Cities})):同样是将每个多选值作为子集合存入,没有展开为单个城市记录Clear(colCities);ForAll(IncidentLog.Cities, Collect(colCities, [ThisRecord.Cities.Value])):IncidentLog.Cities是列的集合,ThisRecord指代的是子集合,应该用ThisRecord.Value,且写法冗余,不如Ungroup高效
绑定Combobox
创建好colUniqueCities后,将Combobox的Items属性设置为colUniqueCities,并把DisplayFields设为["Result"](因为Distinct返回的字段名为Result),就能显示去重后的城市列表了。
内容的提问来源于stack exchange,提问作者Jameel
相关产品推荐
相关产品推荐

