【问题标题】:How to get distinct Gallery tiles in PowerApps?如何在 PowerApps 中获得不同的图库磁贴?
【发布时间】:2021-02-11 05:55:08
【问题描述】:

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

注意:我忘了在 Sys.下面屏幕截图中的第一列名称应为“系统名称”

图库 ->Items 属性 [CODE]

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

平铺 -> 文本属性 [CODE]

ThisItem.'Sys Name'

【问题讨论】:

    标签: filter powerapps powerapps-canvas powerapps-formula powerapps-selected-items


    【解决方案1】:

    要删除重复项,您可以使用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")
    

    你可以从里到外阅读上面的表达式:首先过滤 Table1 中那些“Sys”列以“Sys”开头的行(你原来的)。过滤器的结果将按“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'
    

    等等。

    【讨论】:

    • 哇。这比我想象的要难得多!
    • @carlosfigueria...谢谢! DropColumns 会从 Excel 表中删除任何列吗?我是否需要提及 Excel 表中存在的所有列名? (例如:“型号#”、“当前状态、先前状态”)
    • 出现错误:函数“AddColumns”和“DropColumns”有一些无效参数。名称无效。无法识别此标识符。
    • 我在 Gallery 的 Items 属性中添加上述代码
    • 第一个问题:DropColumns / AddColumns 不会更改原始数据源(Excel 表),它会创建一个新表(在内存中)并应用更改...关于提及所有列名称 - 不是真的 - 您可以在画廊的 Items 属性中使用 GroupBy 表达式,并且如果您可以访问组中的字段 (BySys)。我会用这个其他选项更新答案。
    【解决方案2】:

    另一种方法是使用“Distinct function”,如下所示

    Distinct(Table1, Column_Name)
    

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

    RenameColumns(Distinct(Table1, Column_Name), "Result", "Renamed_Column")
    

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      相关资源
      最近更新 更多