图库过滤器 - powerapps

Gallery filter - powerapps

我的 table 有 60 列,例如 table 如下所示

Name  Process1         Process2 ..............  Process59
A            1             2                         0
B            4             0                         0
C            2             3                         1

在 powerapp 中 - 我已经从用户那里得到了名字。在我们的例子中,如果用户选择“A”,那么我希望我的图库只显示 A 的值大于 0

的过程列

在这种情况下,如果选择“A”,则图库将仅显示流程 1、流程 2 及其值

如果用户选择“B”,则只会显示流程 1

我如何着手实现它 - 我知道我必须使用过滤器 - 但我如何遍历 table 中的所有列以找到所选用户大于 0 的值?

你不能有直接过滤并给出列名作为结果的表达式...你可以做的是 unpivot 你的 table,这样你就有了如下所示的结构:

Name  Process    Value
A     Process1   1
A     Process2   2
...
A     Process59  0
B     Process1   4
B     Process2   0
...
B     Process59  0
C     Process1   2
C     Process2   3
...
C     Process59  1

获得该格式的数据后,您可以根据列值应用过滤器。

要创建未透视的 table,您可以使用这样的表达式(假设您的数据源名为 'MyDataSource'):

    Clear(UnpivotedCollection);
    ForAll(
            MyDataSource,
            Collect(
                    UnpivotedCollection,
                    { Name: Name, Attribute: "Process1", Value: Process1 },
                    { Name: Name, Attribute: "Process2", Value: Process2 },
                    { Name: Name, Attribute: "Process3", Value: Process3 },
                    ...
                    { Name: Name, Attribute: "Process58", Value: Process58 },
                    { Name: Name, Attribute: "Process59", Value: Process59 }))

如果您在 App 的 OnStart 属性(或在更新数据源后可以刷新逆透视集合的其他地方)中有此表达式,则可以开始使用它。现在,如果您有一个 Dropdown 控件,其中的 Items 属性:

表达式如下
MyDataSource.Name

然后您可以拥有一个画廊,其中的项目具有以下表达式 属性:

Filter(
    UnpivotedCollection,
    Name = Dropdown1.Selected.Name
    Value > 0)

您将在图库中看到给定名称的正值记录。