You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Microsoft Power Apps中提交表单刷新数据集后保持画廊滚动位置

Power Apps 提交表单/数据集刷新后保持滚动位置的解决方案

针对你在面试指南应用中遇到的「数据集刷新后滚动条回到顶部」问题,以下是几种可行的解决方法,同时兼顾单人记录和多人同步查看的场景:

方法一:本地变量记录滚动位置(单人场景优先)

通过变量保存当前滚动位置,在提交表单并刷新数据集后恢复:

  1. 在滚动容器(如ScrollableContainer)的OnScroll事件中,实时更新滚动位置变量:
    Set(varCurrentScrollY, Self.ScrollY)
    
  2. 在提交按钮的OnSelect事件中,先保存滚动位置,再执行提交和刷新,最后恢复位置:
    Set(varCurrentScrollY, ScrollableContainer1.ScrollY);
    SubmitForm(InterviewForm);
    Refresh(InterviewNotes);
    Set(ScrollableContainer1.ScrollY, varCurrentScrollY);
    
  3. 优化:若刷新存在延迟,可将恢复滚动的逻辑移至表单的OnSuccess事件中,确保提交完成后再执行:
    Set(ScrollableContainer1.ScrollY, varCurrentScrollY);
    

方法二:数据源存储滚动位置(多人同步场景)

为了让另一用户查看时也能定位到相同滚动位置,可将滚动位置存储到共享数据源:

  1. 在你的面试笔记数据源中新增一列(如LastScrollPosition,数字类型),用于记录最新滚动位置。
  2. 在滚动容器的OnScroll事件中,实时更新数据源的滚动位置字段:
    Patch(InterviewNotes, LookUp(InterviewNotes, ID = CurrentInterviewID), {LastScrollPosition: Self.ScrollY})
    
  3. 在数据集刷新后(如屏幕OnVisible、数据源OnChange事件),读取并设置滚动位置:
    Set(ScrollableContainer1.ScrollY, LookUp(InterviewNotes, ID = CurrentInterviewID).LastScrollPosition)
    

方法三:避免全量刷新,直接更新本地记录

如果不需要刷新整个数据集,可通过表单的LastSubmit属性直接更新本地绑定的记录,从根源避免滚动重置:

  1. 在提交按钮的OnSelect事件中仅执行提交:
    SubmitForm(InterviewForm)
    
  2. 在表单的OnSuccess事件中,更新本地记录变量:
    Set(varCurrentInterviewRecord, Self.LastSubmit)
    
  3. 将屏幕上的笔记展示控件直接绑定到varCurrentInterviewRecord,而非数据源本身,这样无需刷新数据集,滚动位置自然保持。

额外提示(针对Gallery控件)

如果你的面试问题是用Gallery展示的,除了滚动位置,还可记录选中项来精准定位:

  • 在Gallery的OnSelect事件中记录选中项:Set(varSelectedQuestion, Self.Selected)
  • 数据集刷新后,设置Gallery1.Selected = varSelectedQuestion,Gallery会自动滚动到选中项位置。

内容的提问来源于stack exchange,提问作者Jonrod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:27:44