从数据源和集合中删除记录
在本单元中,我们将介绍从表格数据源或集合中删除记录的概念。 与可使用多个控件和函数来执行的创建和编辑记录不同的是,只有少数选项可用于删除记录,包括 Remove、RemoveIf 和 Clear 函数。 我们通常会将这些函数添加到按钮或图标控件的 OnSelect 属性,用于删除记录。
删除记录
要从数据源中删除记录,可使用 Remove 函数。 使用 Remove 函数指定数据源以及想要从中删除的记录。 要指定记录,最常用的方法是使用 LookUp 函数从数据源中检索记录。 在使用库时如果想要删除当前记录,还可以选用 ThisItem 运算符来指向记录。
例如,您可使用以下公式删除记录。
Remove(CustomerOrders, LookUp(CustomerOrders, ID = 1))
此公式会删除 CustomerOrders 数据源中 ID 为 1 的记录。
Remove 函数不要求确认
Remove 函数在删除指定记录前,不会提示进行确认。 如果想要确认用户是否真的要删除记录,需要创建确认功能,例如包含按钮的弹出对话框。
根据条件删除
如果要从数据源中删除多条记录,可以使用 RemoveIf。 利用 RemoveIf 函数,您可指定一个数据源并提供待删除记录的选择条件。 这与 Filter 函数所用逻辑相同。
例如,您可使用以下公式删除 CustomerOrders 数据源中“状态”为“已过期”的所有记录。
RemoveIf(CustomerOrders, Status = "Expired")
删除所有记录
您也可删除数据源中的所有记录。 这种情况常见于支持使用 Clear 函数的集合。 如果要删除数据源 中的所有记录,则可使用 RemoveIf 函数。
删除集合中的所有记录
Clear 函数可删除集合 中的所有记录。 集合中的列将保留。 唯一会传给函数的输入值为集合的名称。
例如,您可使用以下公式删除名为 collectSelectedItems 的集合中的所有记录。
Clear(collectSelectedItems)
此公式会删除 collectSelectedItems 集合中的所有记录,但不会更改集合中的列。
如果您想要清空一个集合而又不想对其进行重新定义(比如启用重置按钮或选择新订单),通常会看到这类公式。 处理集合时,还可以使用 ClearCollect 函数。
ClearCollect 函数可以删除集合中的所有记录,然后在同一集合中添加不同的记录集。 在这一个函数中,ClearCollect 将 Clear 函数与 Collect 函数组合到了一起。
所有这三个函数都各有用处。 在思考是要使用 Clear 和 Collect 还是使用 ClearCollect 时,可采用的一种方法是,在清除集合时,与需要将记录添加回去的情况进行比较。 下面通过两个例子具体说明:
一次完成 - 例如,如果要在显示某个屏幕时为下拉菜单重新加载集合中的项目,则需要使用 ClearCollect。 公式中的单个 ClearCollect 函数会删除旧记录,并立即添加新记录。
多步完成 - 例如,如果要使用集合来存储用户输入内容,比如购物车中的内容,则可以使用 Clear 和 Collect。 这是因为用户可能会希望清空其购物车,而不添加新的记录。
删除数据源中的所有记录
可以使用 RemoveIf 函数删除数据源中的所有记录。 这种情况并不太常见。 同样,在公式运行之前也没有确认步骤,除非构建确认功能。 最后,Power Apps 不提供“撤消”或“回收站”操作。 如果要恢复数据,需要进入数据源,并在 Power Apps 外部使用适用于该数据源的任何恢复过程。 请谨慎操作。
例如,您可使用以下公式删除数据源中的所有记录。
RemoveIf(CustomerOrders, true)
该公式会删除 CustomerOrders 数据源中的所有记录,而不会更改数据源的列。
之所以会这样的原因在于,RemoveIf 函数会检查数据源中的每条记录,查看公式结果是否为 true。 在本例中,公式设置为 true,所以会删除每条记录。
注意
将公式部分设置为 true 还适用于 Filter 函数。 此项设置非常适用于在您不确定 Filter 能否返回数据时尝试排除公式问题的情况。