如何在Microsoft Power Apps中提交表单刷新数据集后保持画廊滚动位置
Power Apps 提交表单/数据集刷新后保持滚动位置的解决方案
针对你在面试指南应用中遇到的「数据集刷新后滚动条回到顶部」问题,以下是几种可行的解决方法,同时兼顾单人记录和多人同步查看的场景:
方法一:本地变量记录滚动位置(单人场景优先)
通过变量保存当前滚动位置,在提交表单并刷新数据集后恢复:
- 在滚动容器(如
ScrollableContainer)的OnScroll事件中,实时更新滚动位置变量:Set(varCurrentScrollY, Self.ScrollY) - 在提交按钮的OnSelect事件中,先保存滚动位置,再执行提交和刷新,最后恢复位置:
Set(varCurrentScrollY, ScrollableContainer1.ScrollY); SubmitForm(InterviewForm); Refresh(InterviewNotes); Set(ScrollableContainer1.ScrollY, varCurrentScrollY); - 优化:若刷新存在延迟,可将恢复滚动的逻辑移至表单的OnSuccess事件中,确保提交完成后再执行:
Set(ScrollableContainer1.ScrollY, varCurrentScrollY);
方法二:数据源存储滚动位置(多人同步场景)
为了让另一用户查看时也能定位到相同滚动位置,可将滚动位置存储到共享数据源:
- 在你的面试笔记数据源中新增一列(如
LastScrollPosition,数字类型),用于记录最新滚动位置。 - 在滚动容器的OnScroll事件中,实时更新数据源的滚动位置字段:
Patch(InterviewNotes, LookUp(InterviewNotes, ID = CurrentInterviewID), {LastScrollPosition: Self.ScrollY}) - 在数据集刷新后(如屏幕OnVisible、数据源OnChange事件),读取并设置滚动位置:
Set(ScrollableContainer1.ScrollY, LookUp(InterviewNotes, ID = CurrentInterviewID).LastScrollPosition)
方法三:避免全量刷新,直接更新本地记录
如果不需要刷新整个数据集,可通过表单的LastSubmit属性直接更新本地绑定的记录,从根源避免滚动重置:
- 在提交按钮的OnSelect事件中仅执行提交:
SubmitForm(InterviewForm) - 在表单的OnSuccess事件中,更新本地记录变量:
Set(varCurrentInterviewRecord, Self.LastSubmit) - 将屏幕上的笔记展示控件直接绑定到
varCurrentInterviewRecord,而非数据源本身,这样无需刷新数据集,滚动位置自然保持。
额外提示(针对Gallery控件)
如果你的面试问题是用Gallery展示的,除了滚动位置,还可记录选中项来精准定位:
- 在Gallery的OnSelect事件中记录选中项:
Set(varSelectedQuestion, Self.Selected) - 数据集刷新后,设置
Gallery1.Selected = varSelectedQuestion,Gallery会自动滚动到选中项位置。
内容的提问来源于stack exchange,提问作者Jonrod
相关产品推荐
相关产品推荐

