Power Apps:只读DataCard的OnStart替代实现及触发问题咨询
解决只读DataCard首次加载触发校验的方案
直接在屏幕加载时执行校验
既然只读DataCard没法用OnSelect,OnChange又只在值变更后触发,干脆跳过控件事件,把校验逻辑写在显示表单的屏幕OnVisible事件里。打开页面(首次打开请求)时自动执行,直接拿DataCard的当前值和全局变量对比:If(DataCardValueX.Value <> GlobalCheckVar, Notify("值不匹配,请检查", Error))临时赋值触发OnChange(绕开默认值报错)
如果非得依赖OnChange事件的话,可以在屏幕OnVisible里做两次赋值操作:先给DataCard控件设一个和当前真实值不一样的临时异常值,立刻再改回真实值,强制触发OnChange。用本地变量中转避免直接修改报错:// 先存当前真实值 Set(TempRealVal, DataCardValueX.Value); // 设异常值触发变更 UpdateContext({LocalTempVal: TempRealVal & "_temp"}); DataCardValueX.Value = LocalTempVal; // 立刻恢复真实值 UpdateContext({LocalTempVal: TempRealVal}); DataCardValueX.Value = LocalTempVal;两次赋值会触发OnChange执行你的校验代码,测试下如果直接改控件值报错,就换成绑定数据源的临时修改再恢复(前提是数据源允许临时操作)。
用隐藏控件辅助触发
加个隐藏的文本输入控件,绑定和只读DataCard相同的数据源字段,把校验逻辑放在这个隐藏控件的OnChange里。然后在屏幕OnVisible里给这个隐藏控件设异常值再改回,触发OnChange。这样既不影响只读DataCard的显示状态,又能触发校验逻辑。
内容的提问来源于stack exchange,提问作者KateB
相关产品推荐
相关产品推荐

