图库过滤器-PowerApps

问题描述

我有一个包含60列的表格,例如该表格如下所示

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。

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

解决方法

您不能有一个直接过滤并给出列名称作为结果的表达式...您可以做的是 unpivot 您的表,这样您将拥有一个类似于下面的结构:>

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

一旦您使用了该格式的数据,就可以根据列值应用过滤器。

要创建未透视表,可以使用如下表达式(假设您的数据源称为“ MyDataSource”):

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

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

MyDataSource.Name

然后,您可以为其图库的Items属性添加以下表达式:

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

您将在画廊中找到具有正值的给定名称的记录。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...