0

我的数据源PowerApps是 Excel 表。用户输入后,excel表如下所示。在下图中,可以看到“Sys1”在 Excel 表中出现两次,导致在 PowerApps 中为同一系统库创建一个额外的磁贴。我的问题是如何避免在 PowerApps 中重复创建磁贴?下面是 Gallery 和 Tile 的代码。我是新手PowerApps。提供带有解释的代码。

注意:我忘记在 Sys 之后添加名称。下面屏幕截图中的第一列名称应为“系统名称”

在此处输入图像描述

图库 -> 项目属性 [代码]

Filter(Table1,Startswith('Sys Name'),"Sys"))

平铺 -> 文本属性 [代码]

ThisItem.'Sys Name'
4

2 回答 2

2

要删除重复项,您可以使用GroupBy 函数并获取每个组中的一个元素。完成后,如有必要,您可以使用一些表格整形功能(AddColumns、DropColumns)重新创建原始列结构:

DropColumns(
    AddColumns(
        GroupBy(
            Filter(Table1, StartsWith('Sys',"Sys")),
            "Sys",
            "BySys"),
        "Model#", First(BySys).'Model#',
        "Current Status", First(BySys).'Current Status',
        "Previous Status", First(BySys).'Previous Status'),
    "BySys")

您可以从内到外阅读上述表达式的方式:首先仅针对“Sys”列以“Sys”(您最初拥有的)开头的那些行过滤 Table1。过滤器的结果将按“Sys”列分组,所有具有相似值的行都在“BySys”列中分组。对于这个结果,我们通过采用第一个分组元素添加三列:“模型#”、“当前状态”和“先前状态”。最后,我们删除了最外层函数的分组列('BySys')。

如果您不想在表达式中列出原始数据源的所有属性,则可以保留 GroupBy 表达式作为图库的项目:

GroupBy(
    Filter(Table1, StartsWith('Sys',"Sys")),
    "Sys",
    "BySys")

在图库模板中,您可以有一个标签,将“Sys”列直接显示为ThisItem.Sys,但如果您想访问其他列,则需要从组中选择要显示的内容。例如,要显示特定 'Sys' 值的第一行的型号,您可以将此表达式作为标签的 Text 属性:

First(ThisItem.BySys).'Model#'

如果您想显示许多其他属性并且不想继续重复调用,则另一种选择First是将其添加为画廊项目的另一个(记录)属性:

AddColumns(
    GroupBy(
        Filter(Table1, StartsWith('Sys',"Sys")),
        "Sys",
        "BySys"),
    "FirstSys", First(BySys))

现在在您的图库中,您可以拥有具有以下属性的标签:

ThisItem.FirstSys.'Model#'
ThisItem.FirstSys.'Current Status'

等等。

于 2020-10-28T20:39:03.140 回答
0

另一种方法是使用“不同的功能”,如下所示

Distinct(Table1, Column_Name)

但问题是,它给出了一个表,其中只有一个名为“结果”的列,您可以使用下面的代码对其进行重命名。

RenameColumns(Distinct(Table1, Column_Name), "Result", "Renamed_Column")
于 2021-05-21T16:11:08.657 回答