微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

图库过滤器-PowerApps

如何解决图库过滤器-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)

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。