尝试根据彼此过滤两个组合框的选择时,如何处理powerapps中的循环参考错误?

时间:2019-05-09 08:53:17

标签: checkbox circular-reference powerapps

我正在使用PowerApps创建一个包含两个comboboxes的小型应用程序,该应用程序过滤正在data table上显示的信息,并来自名为Table的excel工作表。更具体地说,我的第一个组合框称为ColorCombo并显示不同的值,这些值来自工作表Color的列Table,第二个组合框称为SizeCombo并显示不同的值Size

的列Table中包含的值

我的目标是根据对另一个组合框的选择来过滤一个组合框的信息。

例如,我有[Red, Blue,Green]列出的颜色:ColorCombo[32,34,36]列出的尺寸:SizeCombo。如果红色仅在尺寸32上可用,那么当我在colorcombo上选择红色选项时,我只想在SizeCombo上看到数字32,如果尺寸32在绿色和蓝色上可用,那么当我在SizeCombo上选择它,我只想在ColorCombo上看到绿色和蓝色的选项。到目前为止,我的代码是:

Sort(Distinct(Filter(Table, If(CountRows(ColorCombo.SelectedItems) = 0,true, 
Size in SizeCombo.SelectedItems)),Color),Result,Ascending)

对于colorcombo来说可以正常使用。但是,当我为SizeCombo添加相同的语句时,也会收到循环引用错误。这是我输入的语句:

Sort(Distinct(Filter(Table, If(CountRows(SizeCombo.SelectedItems) = 0,true, 
Color in ColorCombo.SelectedItems)),Size),Result,Ascending)

我知道发生这种情况是因为组合框的选择是相互依赖的,所以这是为了防止无限循环,但是我该如何解决呢?感谢您提供的任何帮助,因为很长一段时间以来我一直在努力寻找解决方案。

1 个答案:

答案 0 :(得分:0)

可以通过UI / UX实现一些快速的解决方法:

  • 强制用户依次浏览两个框
    • sizecombo开头(例如)。
    • colorcombo的DisplayMode设置为If(IsBlank(Size.Selected.Value), DisplayMode.Disabled, DisplayMode.Edit
    • 相应地调整代码。
  • 另一个想法:让用户选择一个尺寸,而不是两个组合框,然后在一个小图库中显示Available Colors的色板。反之亦然,选择一种颜色,然后显示Available Sizes
  • 您可以使用Filter()
  • 轻松完成此操作