将 Power Fx 与命令一同使用
本文介绍命令特定的各个 Power Fx 方面。 还可以使用今天在画布应用中使用的很多其他功能。 请记住,存在差异,因为命令主要用于模型驱动应用。
备注
发布 Power Fx 命令可能需要几分钟时间。 即使在发布操作似乎已完成后,后台操作也仍在运行,这可能并不明显。 您可能需要在发布后等待几分钟,然后刷新应用来查看您的更改。 首次为应用发布基于 Power Fx 的命令时,这通常需要更长的时间。
OnSelect
定义在应用内选择按钮时执行的逻辑。
可见
定义在运行应用时隐藏或显示按钮的逻辑。
若要定义可见性逻辑,请选择此命令。 然后在右侧命令属性窗格中选择可见性,然后选择根据公式中的条件进行显示。 您可以选择编辑栏左侧的可见,然后使用编辑栏编写 Power Fx 表达式。
所选属性
字段 | 类型 | 说明 |
---|---|---|
Item | DataSource 的记录 | 从 DataSource 选择的记录之一。 |
AllItems | 来自 DataSource 的记录表 | 从 DataSource 选择的所有记录。 |
状态 | 枚举 | 所选控件的状态。 编辑 (=0)、新建 (=1)、查看 (=2) |
Unsaved | 布尔值 | 如果 Selected 或 SelectedItems 有未保存的更改,返回 true。 否则返回 false。 如果在命令组件库中将 AutoSave 设置为 true(默认选项),始终返回 false。 |
- Selected 属性由命令的主机提供。
- Item 和 AllItems 名称与 ComboBox 控件和 库 控件有些一致,但这是一种新模式。
- 如果未选择任何记录,Item 将返回 Blank(IsBlank 将返回 true),AllItems 将返回一个空表(IsEmpty 将返回 true)。
- 记录引用(多态记录类型)的 Null DataSource。 可以调用通用函数,如可以使用 Save 或 IsType/AsType。
- 如果 SelectionMax <> 1,Item 始终为空白。 这可以防止将公式仅写入一个项目而不扩展到多个项目。
自动保存
- 很多 JavaScript 命令从保存窗体缓冲开始。 这是因为这会让代码的其余部分更易于使用。
- 默认情况下,窗体缓冲是代表应用制作者保存的。
- 窗体在启动命令之前保存。
- 保存操作期间发生的任何问题都在窗体的 UI 中处理。
Patch 函数
修补(更新)当前选定记录
Patch(Accounts, Self.Selected.Item, {'Account Name': "Changed Account name"})
创建相关记录
备注
如果相关表尚未在命令组件库中,您需要在画布工作室中打开它并在那里添加数据源。
Patch(Tasks,Defaults(Tasks),{Regarding:Self.Selected.Item},{Subject:"Subject of the Task"})
检查和编辑日期属性
If(Self.Selected.Item.'Last Date Included in Campaign'>DateAdd(Now(),-3), Patch(Accounts,Self.Selected.Item,{'Last Date Included in Campaign':Date(2021,10,19)}))
可见属性:如果在网格视图中选择一个或多个记录,则只显示命令
CountRows(Self.Selected.AllItems) > 0
基于记录数据控制可见性
//Button will be visible for accounts with Account Rating > 20
Self.Selected.Item.'Account Rating'>20
导航
备注
有关其他选项,请参阅使用 JavaScript 的客户端 API 参考。 详细信息:navigateTo(客户端 API 参考)
导航到自定义页面
要导航到模型驱动应用中的自定义画布页面,将页面名称作为第一个参数传递。
Navigate( myCustomPage )
导航到表的默认视图
要导航到表的默认视图,请将表名称作为第一个参数传递。
Navigate( Accounts )
导航到表的特定系统视图
要导航到表的特定系统视图,传递表的 Views
枚举。
Navigate( 'Accounts (Views)'.'My Active Accounts' )
导航到表的默认窗体
要导航到表的默认窗体,将记录作为第一个参数传递。
Navigate( Gallery1.Selected )
在创建模式下导航到表的默认窗体
要导航到表的默认窗体,传递从 Defaults 函数创建的 Dataverse 记录。 这将打开将此记录作为新记录的默认窗体。 Defaults 函数采用表名来创建记录。
Navigate( Defaults( Accounts ) )
优化数据源和记录信息的用户体验
使用 DataSourceInfo 函数和 RecordInfo 函数优化所显示和处理的数据信息相关用户体验。
例如,使用 RecordInfo 可确定当前用户是否有权修改记录,并使用其 Visible 属性适当地显示或隐藏“编辑”按钮:
EditButton.Visible =
RecordInfo( Gallery1.Selected, RecordInfo.EditPermission )
例如,使用 DataSourceInfo 确定当前用户是否有权创建记录以及使用其 Visible 属性相应地显示或隐藏“创建”按钮:
CreateButton.Visible =
DataSourceInfo( Accounts, DataSourceInfo.CreatePermission )
在采取措施之前要求确认
使用 Confirm 函数在当前屏幕的顶部显示一个对话框。
Notify( Confirm( "Are you sure?",
{ ConfirmButton: "Yes", CancelButton: "No" }
)
)
如果按是按钮,显示通知 true;如果按否按钮,显示通知 false。
通知用户
可以通过调用 Notify 函数向应用用户显示通知。
备注
NotificationType.Success
当前不受支持,将发出信息通知类型。
Notify( "Model-driven app notification message" )
其他示例
启动 URL
Launch("https://www.bing.com");
访问 1:N 属性
Self.Selected.Item.'Recurring Appointments'
检查相关记录的属性
Self.Selected.Item.'Parent Account'.'Account Name'="parent"
不支持的函数
当前,模型驱动应用中的命令不支持以下 Power Fx 函数。
- Back()
- Clear()
- Collect()
- Copy()
- Disable()
- Enable()
- Exit()
- InvokeControl()
- Language()
- LoadData()
- Param()
- 打印()
- ReadNFC()
- RequestHide()
- ResetForm()
- Revert()
- SaveData()
- ScanBarcode()
- Set()
- SubmitForm()
- UpdateContext()
- User()
- ViewForm()
不支持的枚举
- Align
- AlignInContainer
- BarcodeType
- BorderStyle
- Color
- Direction
- DisplayMode
- Font
- FontWeight
- FormPattern
- GridStyle
- ImagePosition
- ImageRotation
- LabelPosition
- Layout
- LayoutAlignItems
- LayoutDirection
- LayoutJustifyContent
- LayoutMode
- LayoutOverflow
- ListItemTemplate
- MapStyle
- Overflow
- PDFPasswordState
- PenMode
- RemoveFlags
- ScreenTransition
- TeamsTheme
- TextFormat
- TextMode
- TextPosition
- Themes
- Transition
- VerticalAlign
- VirtualKeyboardMode
- Zoom
其他不支持的区域
- 加速
- 应用
- 指南针
- 连接
- Dataverse 文件类型列
- 环境
- 主机
- 布局
- 地点
- ScreenSize