Power Apps画廊基于嵌套集合时,如何实现SharePoint全量项分页加载?
现有一包含约2800条记录的SharePoint列表,在Power Apps中创建了以嵌套集合为数据源的画廊,通过Screen.OnVisible中的公式实现按GrantTitle分组展示(代码如下)。但加载后画廊仅显示2038条记录,滚动到底部也不会加载更多,已将服务器端项计数设置为2000,需要修复该问题以加载全部项。
ClearCollect(colSource,Filter('Grant Applications', CurrentState="1" || CurrentState="0")); // 创建所有资助申请的集合 ClearCollect( colGrants, AddColumns( ShowColumns(colSource , "ID", "GrantTitle", "Grantee", "GrantAmount" ), "Level", 2 ) ); // 创建唯一资助标题的集合 ClearCollect( colGrantTitles, AddColumns( RenameColumns( Distinct( colSource, GrantTitle ), "Result", "GrantTitle" ).GrantTitle, "Level", 1 ) ); // 合并两个集合 ClearCollect( colCombinedGrants, colGrants, colGrantTitles ); //// *** 新增代码 **** // 排序合并后的集合 ClearCollect( colSortedGrants, SortByColumns( colCombinedGrants, "GrantTitle", "GrantAmountRequested_x0028_inUSD", "Level" ) );
解决方案
1. 调高服务器端最大项数限制
Power Apps默认服务器端数据限制最高可设为20000,远大于你的数据量,步骤如下:
- 打开Power Apps编辑器,点击左侧菜单的设置
- 进入高级设置,找到数据限制下的服务器端最大行数,调整为20000
- 保存并重新发布应用
2. 优化集合加载逻辑,避免数据截断
原代码中ClearCollect(colSource, Filter(...))会受服务器端限制,当筛选后数据超过当前设置的最大行数时,只会加载前N条。改用分批加载逻辑确保获取全部数据:
替换原有的colSource加载代码为:
// 初始化空集合 Clear(colSource); // 获取筛选后数据的总条数 Set(varTotalRecords, CountRows(Filter('Grant Applications', CurrentState="1" || CurrentState="0"))); // 分批加载,每次拉取2000条 ForAll( Sequence(Ceiling(varTotalRecords / 2000)), Collect( colSource, Filter( 'Grant Applications', CurrentState="1" || CurrentState="0", ID >= (Value-1)*2000 + 1, ID <= Value*2000 ) ) );
这个逻辑利用ID字段分批拉取数据,确保所有符合筛选条件的记录都被加载到colSource中。
3. 修正排序字段的有效性
原排序代码中使用的"GrantAmountRequested_x0028_inUSD"字段并未包含在colGrants集合中(集合只保留了GrantAmount),会导致排序异常影响数据展示。修改排序字段为集合中存在的字段:
ClearCollect( colSortedGrants, SortByColumns( colCombinedGrants, "GrantTitle", "GrantAmount", "Level" ) );
4. 验证集合数据完整性
添加标签显示CountRows(colSortedGrants),确认集合总条数是否与预期一致。如果集合数据正确但画廊仍显示不全,检查画廊的布局设置,确保没有隐藏项或分页逻辑冲突。
内容的提问来源于stack exchange,提问作者John John
相关产品推荐
相关产品推荐

