我正在使用PowerApps创建一个包含两个comboboxes
的小应用程序,用于过滤data table
上显示的信息,这些信息来自名为Table
的Excel工作表。更具体地说,我的第一个组合框称为ColorCombo
,显示不同的值,这些值来自工作表Table
的列Color
,第二个组合框称为SizeCombo
,显示包含在Table
的列Size
上的不同值
我的目标是根据另一个组合框的选择过滤一个组合框的信息。
例如,我在ColorCombo
上列出了颜色:[Red, Blue,Green]
,SizeCombo
上列出了尺寸:[32,34,36]
。如果红色仅在尺寸 32 上可用,那么当我在 colorcombo 上选择红色选项时,我只想在SizeCombo
上看到数字 32,如果尺寸 32 在绿色和蓝色上可用,那么当我在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)
我知道发生这种情况是因为组合框的选择是递归地相互依赖的,所以这恰好是为了防止无限循环,但我该如何解决这个问题?感谢您提供的任何帮助,因为我长期以来一直在努力寻找解决方案。
一些快速的解决方法可以通过UI/UX实现:
- 强制用户按顺序浏览这两个框
- 从
sizecombo
开始(例如)。 - 将
colorcombo
的显示模式设置为If(IsBlank(Size.Selected.Value), DisplayMode.Disabled, DisplayMode.Edit
- 相应地调整代码。
- 从
- 另一个想法:让用户选择一个大小,然后在一个小的画廊中显示
Available Colors
的色板,而不是两个组合框。反之亦然,选择一种颜色,然后显示Available Sizes
。 - 您可以使用
Filter()
轻松完成此操作