首页 > 解决方案 > 尝试根据彼此过滤两个组合框的选择时,如何处理 powerapps 中的循环引用错误?

问题描述

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

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

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

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

这适用于颜色组合。当我也为 SizeCombo 添加相同的语句时,我得到一个循环引用错误。这是我输入的语句:

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

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

标签: checkboxcircular-referencepowerapps

解决方案


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

  • 强制用户依次通过两个框
    • sizecombo(例如)开始。
    • 将 DisplayMode 设置colorcomboIf(IsBlank(Size.Selected.Value), DisplayMode.Disabled, DisplayMode.Edit
    • 相应地调整代码。
  • 另一个想法:不是两个组合框,而是让用户选择一个大小,然后Available Colors在一个小画廊中显示样本。反之亦然,选择一种颜色然后显示Available Sizes
  • 你可以很容易地使用Filter()

推荐阅读