隔离画布应用中的问题
画布应用允许你设计具有多种不同视觉对象和各种数据连接的应用。 使用 IntelliSense 和 应用检查器 来防范常见问题。 “监视 ”和 “变量”面板 可以帮助你进行调试。
下面是一些其他方法,用于隔离画布应用中的问题。
使用调试标签检查公式
公式可能比较复杂。 当出现问题时,可能很难确定哪个部分失败。 调试标签是查看公式不同部分结果的有用方法。
调试标签是一个 Label ,其 Text 属性设置为感兴趣的公式。 它使你能够准确了解 Power Apps 如何处理这些公式。 若要避免 界定 bug 的范围,请将调试标签插入到其他控件(如 “库” 和 “窗体”)之外。
假设 组合框 控件显示小于预期,并且下拉列表选项为空。
检查 组合框 配置是否正确。 例如, Items 属性设置为下面的复杂公式:
AddColumns(
GroupBy(
Filter( Products, Rating > 4 ),
"ProductType",
"Details"
),
"Total quantity",
Sum( Details, Quantity )
)
从最内部的表达式 Filter( Products, Rating > 4 )
开始。 插入调试标签并设置其 Text 属性以测试该表达式的结果。 用于验证的一些有用信息:
- 检查结果数是否与预期一样:
CountRows( Filter( Products, Rating > 4 ) )
- 检查第一个结果并验证筛选器是否按预期工作:
"Rating of first result is " & First( Filter( Products, Rating > 4 ) ).Rating
- 通过组合其名称来检查结果:
Concat( Filter( Products, Rating > 4 ), ProductName & ", ")
提示
使用数据集时,调试表可用于预览记录。 此概念类似于调试标签。 插入 一个数据表 ,其 Items 属性设置为感兴趣的数据集。
你可能希望使用 FirstN 和 LastN 函数 来提高数据集的性能。
确认正确计算表达式后,可以转到下一个外部表达式 GroupBy( Filter( Products, Rating > 4 ), "ProductType", "Details" )
。 通过有条不紊地继续操作,可以找出复杂表达式的哪个部分不起作用。
使用空下拉列表选项时,请从 DisplayFields 属性开始。 假设它设置为 [ProductType]
。 使用调试标签验证 Power Apps 是否识别此字段并包含文本。 由于所有下拉列表选项都是空的,因此只需检查任何记录即可。 让我们选取第一条记录并查看其 ProductType
字段。 将调试标签设置为:
First(
AddColumns(
GroupBy(
Filter( Products, Rating > 4 ),
"ProductType",
"Details"
),
"Total quantity",
Sum( Details, Quantity )
)
).ProductType
如果结果为空,则可能是:
- 该
ProductType
记录的字段确实为空。 如果数据集来自应用外部,检查 Power Apps 外部。 - 一个或多个表达式不起作用。 按上述说明对其进行分解以缩小范围。 这可能是 Power Apps bug 或编写公式时的错误。
- 数据未到达 Power Apps。 这可能是网络问题、数据源问题或 Power Apps bug。
如果结果包含文本,则可能是控件的 Power Apps bug。 可以通过 支持请求 报告 bug, 并使用其他控件 作为解决方法。
尝试其他控件
若要确定问题是否与特定控件有关,请尝试使用具有相同输入或输出 数据类型 的其他控件。
布尔值
选项和表
日期和日期时间
图像和媒体
数字
Text
所有类型
- 将值转换为文本后的标签
如果同一问题发生在其他控件上,则问题出在使用的公式或数据源上。 继续执行上述调试步骤,以进一步隔离问题。
如果问题只发生在特定类型的控件上,则可能是控件 bug。 可以向 Microsoft 报告 Bug。
尝试其他应用结构
对于另一个控件内的控件,公式的行为可能不同。 例如, 库中 的控件可以使用 ThisItem ,但库外的控件不能。 库或组件外部的控件不能引用其中的控件。
标识符的这种不同可见性称为 范围。 包含其他控件的控件引入了新的范围。
如果公式在包含的控件中不起作用,则可能与范围相关。 尝试在容器外部使用相同的公式。
例如,库中的 Label 控件应显示每个记录的名称,但不显示任何文本。
Label.Text 设置为 ThisItem.Name
。
Gallery.Items 设置为 Products
。
若要检查范围问题,请在应用顶层的库外部插入调试标签。 设置其 Text 属性以显示数据集的第一条记录的名称: First(Products).Name
。
调试标签应与库的第一行具有相同的结果。 否则,它可能是 Power Apps 的范围 bug,可以通过 支持请求进行报告。 另一方面,如果两者都为空,则问题可能出在数据源上。
界定问题的范围的一些可能解决方法:
- 将控件移出其容器
- 引用全局变量或上下文变量中的数据
- 使用 Patch 避免使用 编辑窗体 控件
还原到早期版本
如果尚未对应用进行重大更改,并且应用在重新发布后突然停止工作,请尝试 将其还原到以前的版本。 如果它再次正常工作,请检查所做的更改,看看哪些内容可能破坏了应用。
有时,新版本的 Power Apps 可能会引入 bug。 相反,新版本可能会带来 bug 修复。 Microsoft 支持部门可以建议是应还原到较旧的创作版本还是升级到较新的创作版本。 请记住,如果自行更改创作版本,则对非推荐版本的支持有限。
创建最小重现应用
创建 最小重现应用 的过程可能会发现复杂应用不明显的应用配置错误。 即使问题未修复,你也会缩小原因范围,并更轻松地向其他人解释问题。