Power Apps中基于双SharePoint列表筛选画廊及搜索功能异常问题
Power Apps画廊筛选问题:保留搜索功能同时解决委托警告与数据获取失败
问题说明
- 需求:OutGallery控件需从
CarRentalAgreements列表筛选出未存在于Check-In Agreements列表的记录,同时支持通过协议号/车牌号搜索 - 异常现象:现有代码无语法错误,但触发委托警告,且无法正常获取SharePoint列表数据;移除搜索条件后画廊可显示数据,但需保留搜索功能
现有代码
当前画廊Items属性代码:
Filter( Filter( CarRentalAgreements, 'TextSearch-In'.Text in ['Agreement No'] || 'TextSearch-In'.Text in ['Car No'] ), !IsBlank( LookUp( 'Check-In Agreements', Agreement = 'Agreement No' && Car = 'Car No' ) ) = false )
导致冲突的搜索功能代码片段:
'TextSearch-In'.Text in ['Agreement No'] || 'TextSearch-In'.Text in ['Car No']
解决方案
1. 替换不支持委托的搜索逻辑
SharePoint对in操作符的文本包含搜索不支持委托,改用支持委托的Search函数实现多字段搜索:
Search(CarRentalAgreements, 'TextSearch-In'.Text, "Agreement No", "Car No")
注:
Search函数支持在SharePoint列表的文本字段上进行委托搜索,可覆盖协议号和车牌号的包含匹配需求
2. 优化排除已入住记录的逻辑
嵌套LookUp会导致委托问题,先将已入住的协议号+车牌号组合加载到本地集合,再基于集合筛选:
- 在屏幕的
OnVisible属性中添加集合加载代码:ClearCollect(CheckedInPairs, ShowColumns('Check-In Agreements', "Agreement", "Car")) - 修改画廊Items属性代码:
Filter( Search(CarRentalAgreements, 'TextSearch-In'.Text, "Agreement No", "Car No"), IsBlank(LookUp(CheckedInPairs, Agreement = 'Agreement No' && Car = 'Car No')) )
3. 额外注意事项
- 确认SharePoint列表字段的内部名称与代码中一致(避免显示名称含空格导致的匹配错误)
- 若
Check-In Agreements列表数据量过大,可添加分页逻辑或增量加载集合,避免性能问题 - 检查应用设置中的委托支持,确保未关闭相关功能
内容的提问来源于stack exchange,提问作者Maisam Alrajabi
相关产品推荐
相关产品推荐

