PowerApps Canvas应用:记录修改后全局变量未更新问题咨询
这不是Bug,是PowerApps全局变量的预期行为
先给你吃个定心丸:这绝对不是Bug,而是PowerApps里Set()创建的全局变量的静态特性导致的——当你执行Set(SelectedRecord, ThisItem)时,你其实是把当前Gallery项的快照值存入了变量,而不是和数据源建立了动态绑定关系。所以当你在Page3更新数据源后,这个全局变量不会自动同步最新的值,Page2的标签自然还是显示旧内容。
解决方法:提交后主动更新全局变量
你需要在Page3的保存按钮逻辑里,提交表单后主动刷新SelectedRecord变量,这里有两种高效的实现方式:
方式1:利用表单的LastSubmit属性(推荐)
表单提交成功后,Form_1.LastSubmit会返回刚刚更新完成的完整记录,直接用它来更新全局变量,不需要刷新整个数据源,性能更优:
SubmitForm(Form_1); If(Form_1.Error = Blank(), // 先确认提交操作成功 Set(SelectedRecord, Form_1.LastSubmit), Notify("记录保存失败,请重试", NotificationType.Error) ); Navigate('Page 2', ScreenTransition.Fade);
方式2:刷新数据源后重新查询
如果你的场景不适合用LastSubmit(比如表单之外还有其他数据源更新操作),可以先刷新数据源,再通过唯一标识(比如记录ID)查询最新的记录:
SubmitForm(Form_1); If(Form_1.Error = Blank(), Refresh(你的数据集名称); // 刷新数据源获取最新数据 Set(SelectedRecord, Lookup(你的数据集名称, ID = SelectedRecord.ID)), // 通过ID匹配最新记录 Notify("记录保存失败,请重试", NotificationType.Error) ); Navigate('Page 2', ScreenTransition.Fade);
额外提示
如果你不想依赖全局变量,也可以直接在Page2的标签中引用数据源的最新记录(比如Lookup(你的数据集名称, ID = SelectedRecord.ID).Field1),但这样每次加载Page2都会触发一次数据源查询,性能略逊于主动更新全局变量的方式。
内容的提问来源于stack exchange,提问作者Stuart
相关产品推荐
相关产品推荐

