如何在PowerApps中获得独特的图库图块?

问题描述

我的PowerApps的数据源是Excel表。用户输入后,excel表如下所示。在下图中,可以看到“ Sys1”在Excel表中出现了两次,从而为PowerApps中的同一系统gallery创建了一个额外的图块。我的问题是如何避免在PowerApps中重复创建图块?下面是gallery和Tile的代码。 我是PowerApps的新手。提供说明代码

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

enter image description here

图库->项目属性[CODE]

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

瓷砖->文本属性[CODE]

ThisItem.'Sys Name'

解决方法

要删除重复项,可以使用GroupBy function并获取每个组中的First个元素。一旦有了这些,就可以使用一些table shaping functions (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”列进行分组。为此,我们通过获取分组元素中的第一个来添加三列:“ Model#”,“当前状态”和“先前状态”。最后,我们删除最外层函数的分组列('BySys')。

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

GroupBy(
    Filter(Table1,"BySys")

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

First(ThisItem.BySys).'Model#'

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

AddColumns(
    GroupBy(
        Filter(Table1,"FirstSys",First(BySys))

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

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

以此类推。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...