AsType 和 IsType 函数
适用于: 画布应用 模型驱动应用 Power Pages Power Platform CLI
检查特定表类型 (IsType) 的记录引用,将引用视为特定类型 (AsType)。
备注
PAC CLI pac power-fx 命令 不支持 IsType。
Description
阅读了解记录引用和多态查找,了解更广泛的介绍和更多详细信息。
查找字段通常指特定表中的记录。 由于表类型已经正确建立,因此您可以使用简单的点符号访问查找的字段。 例如,First( Accounts ).'Primary Contact'.'Full Name' 从客户表到达联系人表中的主要联系人记录,提取全名字段。
Microsoft Dataverse 还支持多态查找字段,它可以引用一组表中的记录,如这些示例中所示。
查找字段 | 可以引用 |
---|---|
所有者 | 用户 或 团队 |
客户 | 客户 或 联系人 |
关于 | 帐户、 联系人、 知识文章等 |
在区域应用公式中,使用记录引用处理多态查找。 因为记录引用可以引用不同的表,所以在编写公式时您不知道哪些字段可用。 不能使用 Record.Field 表示法。 这些公式必须适应应用运行时遇到的记录。
IsType 函数测试记录引用是否引用特定的表类型。 函数返回布尔值 TRUE 或 FALSE。
AsType 函数将记录引用视为特定的表类型,有时称为转换。 使用结果时您可以将它当作表的记录那样使用,然后再次使用 Record.Field 表示法访问该记录的所有字段。 如果引用不是特定类型,将发生错误。
首选将这些函数一起用来测试记录的表类型,然后将其视为该类型的记录,让字段可用:
If( IsType( First( Accounts ).Owner, Users ),
AsType( First( Accounts ).Owner, Users ).'Full Name',
AsType( First( Accounts ).Owner, Teams ).'Team Name'
)
仅在访问记录引用的字段时才需要这些函数。 例如,您可以在 Filter 函数中使用记录引用,而不使用 IsType 或 AsType:
Filter( Accounts, Owner = First( Users ) )
同样,可以将记录引用与 Patch 函数一起使用:
Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )
如果在记录上下文中使用,如在 Gallery 或 Edit form 控件内,您可能需要使用全局消除歧义运算符引用表类型。 例如,此公式对显示公司名称是客户查找的联系人列表的库有效:
If( IsType( ThisItem.'Company Name', Accounts ),
AsType( ThisItem.'Company Name', Accounts ).'Account Name',
AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
对于这两个函数,您将通过连接到表的数据源的名称来指定类型。 为了使公式正常工作,您还必须将要测试或转换的任何类型的数据源添加到应用。 例如,如果您想要将 IsType 和 AsType 与负责人查找和该表中的记录一起使用,则必须添加用户表作为数据源。 您只能添加您在应用中实际使用的数据源;您不需要添加查找可以引用的所有表。
如果记录引用为空白,IsType 将返回 FALSE,AsType 将返回空白。 空白记录的所有字段都将为空白。
语法
AsType( 记录引用, TableType )
- RecordReference - 必需。 一个记录引用,通常是一个查找字段,可以引用多个表中任何一个表的记录。
- TableType - 必需。 记录应该转换到的特定表。
IsType( 记录引用, TableType )
- RecordReference - 必需。 一个记录引用,通常是一个查找字段,可以引用多个表中任何一个表的记录。
- TableType - 必需。 要针对其进行测试的特定表。
示例
了解记录引用和多态查找 包含大量示例。
创建适用于平板电脑的空白画布应用。
在左侧窗格上,选择数据>添加数据。 然后,添加客户和联系人表。
在左窗格上,选择 +(插入)>布局>空白垂直库。
选择连接到数据,然后选择联系人作为数据源。
将库的布局设置为标题和副标题。
在数据窗格中,打开 Title1 列表,然后选择命名。
选择 Subtitle1 Label 控件。
将 Subtitle1 的 Text 属性设置为以下公式:
If( IsBlank( ThisItem.'Company Name' ), "--", IsType( ThisItem.'Company Name', Accounts ), "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name', "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name' )
库中的副标题显示以下值:
- 如果 'Company Name' 为空白,则为 "--"。
- 如果公司名称字段表示的是一个客户,则为“客户:”,然后是客户表中的客户名称字段。
- 如果公司名称字段表示的是一个联系人,则为“联系人:”,然后是联系人表中的全名字段。
您的结果可能与本主题中的结果有所不同,因为它使用经过修改的示例数据来显示其他结果类型。