Power Apps中点击HTML文本控件内文字跳转至应用内其他屏幕的问题
解决Power Apps HTML文本控件点击指定文字跳转应用内屏幕的问题
问题原因
你之前用的公式If(Find( HtmlTxt_ProSgmnt_Process.HtmlText,"OPS 2.05 Processing Refill Orders") >0, Navigate(Screen2))无法实现预期效果,核心问题有两个:
- 公式仅判断HTML文本中是否存在目标字符串,只要包含该内容,点击控件任意区域都会触发跳转,而非仅点击目标文字
- 没有针对点击的具体内容(链接)做识别和定向处理
解决方案
通过自定义HTML链接+拦截LaunchUri实现精准跳转,步骤如下:
- 修改HTML文本内容,替换目标文字为自定义链接
把SharePoint富文本列的内容做替换,将需要跳转的目标文字转换成带自定义协议的HTML链接,同时保留原富文本的样式(颜色、加粗等)。设置HTML文本控件的HtmlText属性为以下公式:
Substitute( YourSharePointList.RichTextColumnName, "OPS 2.05 Processing Refill Orders", "<a href='internal://navigate/Screen2' style='color:inherit;text-decoration:underline;'>OPS 2.05 Processing Refill Orders</a>" )
说明:
style='color:inherit;text-decoration:underline;'是为了保留原文本颜色,同时添加下划线提示可点击;如果原文本有加粗、特定颜色样式,可以把这些样式整合到<a>标签的style属性里。
- 在HTML文本控件的
OnSelect事件中处理跳转
点击HTML里的链接时,Power Apps会自动把链接的href值赋值给全局变量LaunchUri,我们通过识别自定义协议来触发应用内导航:
If( StartsWith(LaunchUri, "internal://navigate/"), Navigate(Last(Split(LaunchUri, "/")).Result) )
扩展:多目标文字跳转
如果有多个需要跳转的不同文本,可嵌套Substitute批量替换,并在OnSelect里用Switch处理不同跳转:
// HtmlText属性 Substitute( Substitute( YourSharePointList.RichTextColumnName, "OPS 2.05 Processing Refill Orders", "<a href='internal://navigate/Screen2'>OPS 2.05 Processing Refill Orders</a>" ), "其他目标文本", "<a href='internal://navigate/Screen3'>其他目标文本</a>" ) // OnSelect属性 Switch( Last(Split(LaunchUri, "/")).Result, "Screen2", Navigate(Screen2), "Screen3", Navigate(Screen3) )
内容的提问来源于stack exchange,提问作者Aamante
相关产品推荐
相关产品推荐

