Remove 和 RemoveIf 函数
适用于: 画布应用 模型驱动应用 Power Platform CLI
备注
PAC CLI pac power-fx 命令 不支持 RemoveIf 功能。
Description
Remove 函数
使用 Remove 函数从数据源中删除特定的一个或多个记录。
对于集合来说,整个记录必须匹配。 可使用 RemoveFlags.All 参数删除记录的所有副本,否则仅删除记录的一个副本。
RemoveIf 函数
使用 RemoveIf 函数根据一个或一组条件删除一个或多个记录。 每个条件都可以是其结果为 true 或 false 的任意公式,并且可以通过名称引用数据源的列。 将会针对每个记录单独评估每个条件,如果所有条件的评估结果为 true,则会删除该记录。
Remove 和 RemoveIf 将修改后的数据源以表 的形式返回。 只能在行为公式中使用这两个函数。
还可使用 Clear 函数删除集合中的所有记录。
代理
与数据源一起使用时,无法委派这些函数。 将仅检索数据源的第一部分,然后应用该函数。 这并不能代表整个过程。 创作时可能会出现警告,以提醒您存在此限制。
委派支持(试验)
委派支持 RemoveIf 现在位于支持 RemoveIf 的数据源的试验预览(默认关闭)中。 如果数据源不支持此功能,Power Apps 将向服务器发送查询,并检索符合筛选表达式的所有数据,最大值为 500、2000 或数据页大小。 然后,对其中每个记录执行删除操作,对服务器进行单独调用。
语法
Remove(DataSource,Record1 [, Record2 ,... ] [,RemoveFlags.All ])
- DataSource –必需。 数据源,其中包含要删除的一个或多个记录。
- Records(记录 )–必需。 要删除的一个或多个记录。
- RemoveFlags.All –可选。 在集合中,同一记录可能出现多次。 可添加 RemoveFlags.All 参数以删除记录的所有副本。
删除( DataSource,Table [, RemoveFlags.All ])
- DataSource –必需。 数据源,其中包含要删除的记录。
- Table –必需。 要删除的记录表。
- RemoveFlags.All –可选。 在集合中,同一记录可能出现多次。 可添加 RemoveFlags.All 参数以删除记录的所有副本。
RemoveIf( DataSource, 条件 [,... ])
- DataSource –必需。 数据源,其中包含要删除的一个或多个记录。
- Conditions(条件 )–必需。 一个公式,对于要删除的一个或多个记录,该公式的求值结果为 true。 可以在公式中使用 DataSource 中的列名。 如果指定多个 Conditions,则所有 Conditions 的求值结果都必须为 true,然后才能删除一个或多个记录。
示例 - 单个公式
在以下示例中,您将删除某个数据源中的一个或多个记录,该数据源名为 IceCream 且以下表中的数据开头:
创建包含示例记录的集合
若要使用此数据创建集合,请执行下列操作:
插入 Button 控件。
将 Button 控件的 OnSelect 属性设置为以下公式:
ClearCollect( IceCream, { ID: 1, Flavor: "Chocolate", Quantity: 100 }, { ID: 2, Flavor: "Vanilla", Quantity: 200 }, { ID: 3, Flavor: "Strawberry", Quantity: 300 } )
按住 Alt 键,并选择此按钮:
使用公式从集合中删除示例记录
公式 | 说明 | 结果 |
---|---|---|
Remove(IceCream, LookUp( IceCream, Flavor="Chocolate" )) |
从数据源中删除 Chocolate 记录。 | 修改了 IceCream 数据源。 |
Remove(IceCream, LookUp( IceCream, Flavor="Chocolate" ), LookUp( IceCream, Flavor="Strawberry" ) ) |
从数据源中删除两个记录。 | 修改了 IceCream 数据源。 |
RemoveIf(IceCream,数量 > 150) | 删除其 Quantity 大于 150 的记录。 | 修改了 IceCream 数据源。 |
RemoveIf(冰淇淋,数量 > 150,left(风味,1)=“S”) | 删除其 Quantity 大于 150 且 Flavor 以 S 开头的记录。 | 修改了 IceCream 数据源。 |
RemoveIf(冰淇淋,真) | 从数据源中删除所有记录。 | 修改了 IceCream 数据源。 |
示例 - 库外部的删除按钮
在此示例中,您将使用 Gallery 控件 列出表中的记录。 然后使用 Remove 函数有选择地删除项。
准备示例数据
此示例使用 Microsoft Dataverse 中随示例应用和数据提供的联系人表。 当您创建环境时,可以部署示例应用和数据。 您也可以改用任何其他数据源。
库外部的删除按钮
在此示例中,您将使用库外部的按钮删除项。
使用“手机布局”创建一个新的空白画布应用。
从左侧窗格中选择插入。
选择垂直库。
Gallery 控件将添加到屏幕上。系统将提示您选择一个数据源,您可以从可用数据源中选择一个数据源。
例如,选择联系人表来使用示例数据:库显示此表中的项目:
从左窗格插入 Button 控件:
将所添加的按钮移到库项下面:
更新按钮文本属性以删除记录。 您还可以使用您选择的文本:
将此 Button 控件的 OnSelect 属性设置为以下公式:
Remove( Contacts, Gallery1.Selected )
Gallery 控件使用 Selected 属性使当前选择的记录可用。 Remove 函数引用此所选记录以将其删除。
使用右上角的播放按钮或按键盘上的 F5 预览应用:
选择要删除的记录,例如本例中的 Nancy 的记录:
选择删除记录:
选择此按钮将删除所选记录(在本示例中为 Nancy 的记录)。
关闭应用预览。
提示
您还可以结合使用替代行为与 Alt 键,而不是通过播放按钮或 F5 使用应用预览。
示例 - 库内的垃圾桶图标
在此示例中,您将使用放置在库中的图标删除项。
创建包含示例数据的集合
如果您已准备好示例数据,请跳过此步骤,移至库内的垃圾桶图标。
向屏幕添加 Button 控件。
将 OnSelect 属性设置为以下公式:
ClearCollect( SampleContacts, { 'Full Name': "Yvonne McKay (sample)", 'Primary Email': "someone_a@example.com" }, { 'Full Name': "Susanna Stubberod (sample)", 'Primary Email': "someone_b@example.com" }, { 'Full Name': "Nancy Anderson (sample)", 'Primary Email': "someone_c@example.com" }, { 'Full Name': "Maria Campbell (sample)", 'Primary Email': "someone_d@example.com" }, { 'Full Name': "Robert Lyon (sample)", 'Primary Email': "someone_e@example.com" }, { 'Full Name': "Paul Cannon (sample)", 'Primary Email': "someone_f@example.com" }, { 'Full Name': "Rene Valdes (sample)", 'Primary Email': "someone_g@example.com" } )
按住 Alt 键,并选择此按钮。
您可以在以下示例中使用的示例集合已创建。
库内的垃圾桶图标
使用“手机布局”创建一个新的空白画布应用。
从左侧窗格中选择插入。
选择垂直库。
Gallery 控件将添加到屏幕上。系统将提示您选择一个数据源,您可以从可用数据源中选择一个数据源。
例如,选择联系人表来使用示例数据:如果已创建集合,请选择您的集合:
选择库中顶部项内的控件。
为确保下一步将项插入库的模板中而不是库外,请确保在进行下一步之前先执行此步骤。
从左侧窗格中选择添加图标。
备注
Add icon 在库的左侧插入一个 + 图标,该图标会针对库中的每个项目进行复制。
在顶部项中,将图标移到屏幕右侧。
选择图标的 Icon 属性并将其设置为以下公式,以将图标图像更新为垃圾桶图标:
Icon.Trash
备注
Icon. 前缀仅在您主动编辑公式时显示。
将 OnSelect 属性设置为以下公式:
Remove( [@Contacts], ThisItem )
备注
您必须将此示例中的全局消除歧义运算符 [@...] 与使用联系人表的示例数据一起使用,以避免与一对多关系冲突。 如果使用列表或 SQL Server 表等数据源,则不需要使用全局歧义消除运算符。
使用右上角的播放按钮或按键盘上的 F5 预览应用。
选择记录旁边的垃圾桶图标,例如,Maria 的记录:
记录已删除:
关闭应用预览。