嵌入式画布应用的指南和故障排除
有关嵌入画布应用的指南
本文提供有关使用嵌入式画布应用的指南,以及有助于诊断所遇到的任何问题的提示。
- 只有统一接口模型驱动的应用才支持嵌入式画布应用。
- 只有三个嵌入式画布应用可以为每个 Web 客户端类型的窗体启用,平板电脑和手机客户端类型只有一个。
- 可以将多个嵌入式画布应用添加到窗体中,但对于 Web 客户端类型,一次只能启用三个,对于平板电脑和手机客户端类型,一次只能启用一个。
- 如果在模型驱动应用窗体上启用了三个以上 Web 客户端类型的嵌入式画布应用,错误消息将显示如下“超过三个画布应用具有 Web 外形规格,此外形规格的最大值为三。 对于 Web,画布应用的数量限制为三,对于平板电脑和手机窗体要素,画布应用的数量限制为一。”
- 若要启用或禁用嵌入式区域应用,请参阅启用嵌入式区域应用和禁用嵌入式区域应用。
- 建议每个窗体选项卡一个嵌入式画布应用。
- 向模型驱动的窗体添加嵌入式区域应用时,请始终使用一定有值的必填列。 如果列没有值,则不会刷新嵌入式画布应用来响应主机模型驱动窗体上的任何数据更改。
- 发布模型驱动窗体也不会发布嵌入式画布应用。
- 嵌入式画布应用必须独立于主机模型驱动的窗体发布。 详细信息:发布应用。
- 如果 Web 浏览器弹出窗口阻止程序已锁定通过区域应用控件属性中的自定义按钮打开 Power Apps Studio 创建或编辑嵌入式区域应用,则必须启用 make.powerapps.com 站点或暂时禁用该弹出窗口阻止程序,然后再次选择自定义。
- 创建新行时不显示嵌入式画布应用,因为需要向其传递行上下文。
- ModelDrivenFormIntegration.Item 对象为只读对象。
- 若要回写数据,必须使用 Dataverse 连接器。 详细信息:Microsoft Dataverse
- 只能通过主机模型驱动的窗体创建嵌入式画布应用。
- 查看带有嵌入式画布应用的模型驱动窗体时,如果错误消息显示“您似乎无权访问此应用,请让应用负责人与您共享”,请确保作者已与您共享该嵌入式画布应用。 详细信息:共享嵌入式画布应用。
- 在 subgrid 控件上添加画布应用不再可用。
- 在预览版中,制作者能够在 subgrid 控件上添加画布应用。 现在,可以将画布应用嵌入在模型驱动的窗体中,将在模型驱动窗体上添加嵌入式画布应用简化到列。
- 这使开发者更轻松,因为他们不必事先决定是作为数据上下文传递当前(主窗体)行还是传递与当前(主窗体)行相关的行列表。
- 开发者总是从一个列开始,可以访问当前(主窗体)行或与当前(主窗体)行相关的行列表。
- 若要访问画布应用中的相关行的列表,制作者可以将 Dataverse 连接器和筛选器功能与画布应用中启用的改进数据源体验和 Dataverse 视图功能结合使用。
例如,要访问联系人表的可用联系人视图,制作者可以使用 Filter(Contacts, 'Contacts (Views)'.'Active Contacts')。 - 使用 subgrid 控件的现有画布应用将继续运行。 但是,我们建议您迁移这些应用来改用列。 详细信息:请参阅迁移使用与当前(主窗体)行相关的行列表的模型驱动窗体上的嵌入式画布应用了解详细信息。
启用嵌入式区域应用
- 选择自定义为显示为嵌入式画布应用的列。
- 在列属性对话中,选择控件选项卡。
- 在控件列表中,选择区域应用,然后选择 Web 选项。
- 选择确定。
禁用嵌入式区域应用
- 选择自定义为显示为嵌入式画布应用的列。
- 在列属性对话中,选择控件选项卡。
- 在控件列表中,选择默认控件,然后选择 Web 选项。
- 选择确定。
在嵌入式画布应用中保存数据
- 由模型驱动应用创建的保存事件,如选择主窗体命令栏上的“保存”按钮,不会保存在嵌入式画布应用中所做的更改。
- 要保存在嵌入式画布应用中所做的更改,请使用 Dataverse 连接器。
- ModelDrivenFormIntegration 控件 OnDataRefresh 操作应仅用于刷新嵌入式画布应用中的数据。 我们建议不要使用 OnDataRefresh 操作来保存嵌入式画布应用中的更改。
嵌入式画布应用的已知问题和限制
限制
- 只有 Web 客户端类型才支持使用区域应用自定义控件。 目前不支持手机和平板电脑客户端类型。
- 不能使用安全角色中的画布应用特权为应用用户授予嵌入式或独立画布应用的访问权限。 有关共享嵌入式画布应用的详细信息,请转到:共享嵌入式画布应用。
- 如果写回正在主机模型驱动窗体中显示的相同数据,窗体将继续显示旧数据,直到刷新。 这样做的简单方法是使用 RefreshForm 方法。
- 嵌入式画布应用中不支持离线和设备功能控件,例如条码扫描、从设备捕获照片或附加文件。
ModelDrivenFormIntegration 控件不为相关表的列提供值
例如,当 ModelDrivenFormIntegration 控件连接到“客户”表时,使用 ModelDrivenFormIntegration.Item.’Primary Contact’.’Full Name’ 将不会返回值。
要访问相关表的列,制作者可以使用此处列出的两种表达式之一:
- LookUp(Accounts, Account = GUID(First(ModelDrivenFormIntegration.Data).ItemId)).'Primary Contact'.'Full Name'
- ItemId 在创作时为空,但在运行时将具有值。
- LookUp(Accounts, Account = ModelDrivenFormIntegration.Item.Account).'Primary Contact'.'Full Name'(此表达式更易于读取,但前一个表达式的效果会稍好一些。)
嵌入式画布应用无法正确呈现
您可以将您的画布应用构建成响应式,这是指应用自动适应不同的屏幕尺寸和外形规格以合理使用可用屏幕空间。 根据您的应用是否生成为响应式,我们建议使用不同的设置,以确保您的画布应用可以在模型驱动应用窗体上的字段内正确呈现。 如果您在画布应用周围遇到额外的空白区域或滚动条,我们建议在应用中检查以下内容。
对于响应式应用:
- 禁用调整大小选项。 这允许您的应用根据您为应用设置的尺寸和属性进行缩放。 嵌入式画布应用可能无法在模型驱动应用窗体上的字段内正确呈现,例如画布应用周围有其他空白区域或滚动条。
对于非响应式应用:
- 我们建议您启用调整大小选项。 这有助于调整应用大小以适合可用空间。
在这两个场景中,请确保在 embedded canvas app 控件中设置并正确定义了应用名称属性值。
嵌入式画布应用不接受高度
画布应用组件不接受窗体字段高度属性。 嵌入时,画布应用组件的维度接受画布应用上设置的纵横比。 由于纵横比是固定的,所以画布应用组件的高度是相对于应用的宽度计算的。 应用的宽度取决于模型驱动应用中可用的水平空间。 如果您想要调整画布应用组件的高度,我们建议您在画布应用上自定义纵横比。 请注意,要自定义纵横比,应用必须采用平板电脑布局。
启用“调整为合适大小”
默认情况下,画布应用已启用调整为合适大小选项。
- 打开您在模型驱动应用窗体上嵌入的画布应用以进行编辑。
- 在 Power Apps Studio 中,选择文件 > 设置 > 屏幕尺寸 + 方向。
- 在高级设置下,将调整为合适大小设置为开。
应用名称属性值缺少或定义不正确
要解决此问题,请选择正确的选项:
托管解决方案:如果解决方案作为托管解决方案导入到环境,请按照下列步骤操作:
登录 Power Apps,转到您最初创建嵌入式画布应用的开发环境。 这也是导出解决方案的环境。
打开包含画布应用的非托管解决方案,然后在解决方案组件列表中找到该画布应用。 完全按照在组件列表中显示的样子复制画布应用名称。 例如,contoso_flooringestimatesapp_624d7。
在同一个解决方案中,编辑具有嵌入式画布应用控件的模型驱动应用,然后使用上一步中的值将画布应用名称设置为嵌入式画布应用控件。 详细信息:在模型驱动窗体上添加嵌入式画布应用
从开发环境中导出解决方案,然后将解决方案导入您的目标环境。
非托管解决方案:如果将解决方案作为非托管解决方案导入到环境中,请编辑具有嵌入式画布应用控件的模型驱动应用,然后按照托管解决方案中所述的类似步骤设置画布应用名称属性。
嵌入的画布应用控件从另一个环境加载画布应用
将包含具有嵌入式画布应用的模型驱动应用的解决方案导入到目标环境中时,此控件将从源环境(即在其中导出解决方案的环境)加载该画布应用。 控件应从目标(当前)环境加载画布应用。
出现此问题的原因是,应用用户没有目标(当前)环境中的 CanvasApp 扩展元数据表的读取访问权限。 若要解决此问题,请将用此户添加到用于有权访问 CanvasApp 扩展元数据表的应用的安全角色。 详细信息:授予 CanvasApp 扩展元数据表的读取权限
错误消息:“您没有对画布应用实体的读取特权。 请联系您的管理员。”
此错误消息显示在应显示嵌入式画布应用的模型驱动应用窗体上。
出现此问题的原因是,应用用户没有 CanvasApp 扩展元数据表的读取访问权限。 若要解决此问题,请将用此户添加到用于有权访问 CanvasApp 扩展元数据表的应用的安全角色。
授予 CanvasApp 扩展元数据表的读取权限
- 在 Power Apps 中,选择环境,然后在左侧导航窗格中,选择应用。
- 依次选择所需应用、… 和共享。
- 在左窗格中,选择应用,然后选择管理安全角色。
- 打开分配给应用的安全角色,如“基本用户”安全角色。
- 选择自定义实体选项卡,然后设置 CanvasApp 扩展元数据表的组织范围读取权限。
- 选择保存并关闭关闭安全角色窗口。
另请参阅
在模型驱动的窗体上嵌入画布应用
在模型驱动窗体上添加嵌入式区域应用
编辑在模型驱动窗体上嵌入的区域应用
自定义在模型驱动窗体上嵌入的区域应用的屏幕尺寸和方向
从嵌入的区域应用内在主机窗体上执行预定义操作
ModelDrivenFormIntegration 控件的属性和操作
共享嵌入式区域应用
迁移使用最新的公共预览版本创建的模型驱动窗体上的嵌入式区域应用