修改数据源中的列

已完成

处理 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 列中的值。