Power Apps中基于AI ID合并两个SPL列表并在Gallery展示多列的技术咨询
问题解答
问题1:应使用Collection、Filter还是其他方法?
- 推荐使用Collection:因为你需要创建一个统一的数据源供应用多模块复用,Collection可以将关联后的结果存储在本地,减少重复查询SharePoint列表的次数,提升应用性能。Filter仅用于临时筛选数据,无法作为全局复用的数据源;而Collection完全能满足你“统一数据源”的核心需求。
问题2:关联数据并显示不同列的正确语法是什么?
你的原公式存在两处关键问题:一是未基于Action Items ID做数据关联,只是简单拼接两个表的列,导致数据无法匹配;二是语法错误——两个ShowColumns之间缺少逗号分隔,且第一个ShowColumns的括号未闭合。
场景1:每个行动项对应最新一条更新记录(一对一关联)
如果只需要展示每个行动项的最新更新内容,可使用AddColumns结合LookUp+Sort实现,示例公式:
ClearCollect( MergCol, AddColumns( 'Logistics Action Tracker FY24', // 关联更新记录表的最新记录字段 "Update Comments", LookUp(Sort('Action Items Update', 'Update Date', Descending), 'Action Items ID' = ThisRecord.'Action Items ID').'Update Comments', "Update Date", LookUp(Sort('Action Items Update', 'Update Date', Descending), 'Action Items ID' = ThisRecord.'Action Items ID').'Update Date', "Updated by", LookUp(Sort('Action Items Update', 'Update Date', Descending), 'Action Items ID' = ThisRecord.'Action Items ID').'Updated by' ) )
该公式会在行动项跟踪器的每条记录后,追加对应ID的最新更新字段,最终集合包含原行动项的所有列+新增的三个更新列。
场景2:保留所有更新记录(一对多关联)
如果需要展示每个行动项的完整历史更新轨迹,可使用ForAll遍历更新记录表,关联对应行动项信息:
ClearCollect( MergCol, ForAll( 'Action Items Update', { // 行动项跟踪器的字段 'Action Items ID': ThisRecord.'Action Items ID', 'Summary of Action': LookUp('Logistics Action Tracker FY24', 'Action Items ID' = ThisRecord.'Action Items ID').'Summary of Action', 'Point of Contact': LookUp('Logistics Action Tracker FY24', 'Action Items ID' = ThisRecord.'Action Items ID').'Point of Contact', // 更新记录表的字段 'Update Comments': ThisRecord.'Update Comments', 'Update Date': ThisRecord.'Update Date', 'Updated by': ThisRecord.'Updated by' } ) )
这种方式会生成每条更新记录对应关联行动项信息的集合,适合展示全量历史更新。
简化写法(保留所有列)
如果不需要指定列,而是直接合并两个表的所有列(基于ID关联),可以用:
ClearCollect( MergCol, ForAll( 'Logistics Action Tracker FY24', Patch( ThisRecord, LookUp('Action Items Update', 'Action Items ID' = ThisRecord.'Action Items ID') ) ) )
注意:若更新记录表存在多个同ID的记录,LookUp仅会返回第一条,如需最新记录需先对更新表按日期排序。
内容的提问来源于stack exchange,提问作者Kat Lambourne
相关产品推荐
相关产品推荐

