修改数据源中的列

已完成

处理 Power Apps 中的数据行时,Filter 和 Search 等函数可帮助细化行内容。 但是,在某些情况下,您需要在不更改原始数据源的情况下操作这些行中的列。

假如您想要创建一个购物车应用,并在其中跟踪所选商品。 在这类情况下,仅在 Power Apps 内部设置临时列,而不影响原始数据源,就变得至关重要。

值得庆幸的是,Power Apps 提供了一组为这一目的量身定制的函数。 这些函数允许您修改应用环境中的列,从而影响数据的处理或呈现方式,而无需对基础数据源进行任何更改。 这可确保您的更改(例如跟踪购物车场景中的选定商品)仅限于应用内部,而且不会影响实际数据源。 这些函数包括:

  • AddColumns

  • DropColumns

  • RenameColumns

  • ShowColumns

AddColumns

AddColumns 函数向表中添加列,使用公式定义本列中的值。 现有列保持不变。

对于以上购物车应用示例,您将使用 AddColumns 函数添加一列,跟踪用户是否选择列。 为此,为按钮控件的 OnSelect 属性设置以下公式。

ClearCollect(collectDigitalAssets, AddColumns(YourDataSource,"UserSelected", false))

选择本按钮后,公式创建包含 YourDataSource 所有行的 collectDigitalAssets 集合并添加列 UserSelected。 所有行的列值均为 false

现在,在控件中将 items 属性设置为以下值。

collectDigitalAssets

控件中,您将有权访问 UserSelected 列,列值为 false。 然后在“库”控件中添加 OnSelect 将列修补为 true 的按钮。

Patch(collectDigitalAssets, ThisItem, {UserSelected: true})

现在,您在 collectDigitalAssets 集合中跟踪用户在应用中选择的行,而不修改数据源中的列。

DropColumns

DropColumns 函数的作用与 AddColumns 相反。 本函数用于在 Power Apps 中删除表列。 使用本函数在 Power Apps 中创建包含多个应用功能列的集合。 这些列仅添加到应用功能的集合并且不提交到数据源,因此需要使用 DropColumns 函数在提交到数据源时删除列。

例如创建要在时间跟踪应用中使用的 collectTimeTracking 集合。 该集合包含五列:Name、HoursWorked、DateWorked、LastScreen 和 Status。 NameHoursWorkedDateWorked 列根据员工工时跟踪保存到 YourDataSource 的数据。 LastScreenStatus 列存储数据,以便在用户使用应用时提供应用功能。

用户完成操作后,可以使用 Collect 函数将信息保存回数据源。 如果列与数据源匹配,Collect 函数会将所有行写入集合。 在本示例中,数据源中仅包含 NameHoursWorkedDateWorked 列。 数据源中不存在 LastScreenStatus,无需进行保存。 您可以使用 DropColumns 将相应列发送到数据源。

Collect(YourDataSource, DropColumns(collectTimeTracking, "LastScreen","Status"))

本函数在删除 LastScreenStatus 列后,将集合 collectTimeTracking 的内容写入数据源 YourDataSource。 请注意,DropColumns 并未更改集合 collectTimeTrackingLastScreenStatus 列仍在集合中。

RenameColumns

需要在应用中而非数据源中操作列名称时,请使用 RenameColumns 函数。 常见用例是无法编辑的数据源难以引用列名称或列名称使用“Date”等保留字。

您可在将数据存储到集合时使用本函数。 Collect 函数可以获取数据源的内容并将其存储到集合中。

Collect(collectProjectData, ProjectDataSource)

本公式将创建集成数据源 ProjectDataSource 所有数据行的集合 collectProjectData。 如果数据源包含 Date 列,将本列重命名为 ProjectDate 更便于在 Power Apps 中使用。 为此,您可以使用以下公式代替上一示例。

Collect(collectProjectData, RenameColumns(ProjectDataSource, "Date","ProjectDate"))

您拥有相同的行。 现在集合中的列名为 ProjectDate,而非 Date。 这样可以灵活地将列命名为不容易混淆的名称,以便在应用中使用列。

ShowColumns

ShowColumns 用于显示数据源中的一列或多列。 对仅需要返回一列的控件使用本函数。 常见示例为下拉列表控件。

借助下拉列表控件,通常使用 Microsoft Dataverse 表等数据源提供选项。 设置数据源的 items 属性时,Power Apps 将选择显示的列(如有多列)。 您可以使用 ShowColumns 函数选择要显示的列。

如要使用 Customers 数据源显示 CustomerName 列中的客户名称, 您可在下拉列表控件 Items 属性中使用以下公式。

ShowColumns(Customers, "CustomerName")

使用本公式,下拉列表控件显示 CustomerName 列中的值。

ShowColumns 还可以返回多列。 下拉列表控件仅显示第一列,但您有权访问检索到的所有列。 以下示例展示如何将 ID 列添加到下拉列表控件。

ShowColumns(Customers, "CustomerName", "ID")

“下拉列表”控件仅显示下拉列表控件 CustomerName 列中的值,但您可在使用本公式后访问 ID 列中的值。 向屏幕添加标签控件并将 Text 值设置为以下值。 如果下拉列表未命名为 Dropdown1,请对公式进行相应的编辑。

Dropdown1.Selected.ID

公式为下拉列表控件的选定行返回 ID 列中的值。