了解如何在 Power Apps 的下拉列表控件中实现使用父下拉列表筛选子下拉列表的功能。
目录
实现的目标
缩小范围方法①(依赖关系设定)
缩小范围方法②(个人创作)
概括
4-1 实现的目标
我认为有些情况下您希望在下拉列表中显示表格中的指定值。例如,使用下拉列表指定分类。我认为如果只有一种分类的话是很容易实现的。
如果有两种分类怎么办?例如,有一个分类①和一个分类②,您可以按分类①缩小搜索范围,然后从缩小的分类②中进行选择。
案例如下图所示。
如果您在父下拉列表中选择“机械铅笔”,则子下拉列表中将仅显示与“机械铅笔”对应的选项。
4-2 缩小范围方法①(依赖关系设定)
首先,我们尝试使用下面的 数据库 列表“sampledata”作为数据源。
将父下拉列表设置为“InCharge”列,将子下拉列表设置为“Diqu”列。
添加下拉控件,并将sampledata的“InCharge”列设置为选择,如下图所示。
Dropdown2的items设置为
Sampledata
当您运行它并查看下拉列表时,会显示重复的值,如下所示。
因此,使用Distinct函数删除重复项并显示它们。
使用Disctinct函数在下拉列表的 Items 属性中显示“InCharge”列,如下所示。
当您运行它时,重复项将被删除并显示,如下所示。
接下来,设置子下拉列表。
如下图,在子下拉列表的Items中写入一下内容
Filter(Sampledata, Diqu = Dropdown2.Selected.Diqu)
当您运行它并显示下拉列表时,只有与父下拉列表中选择的值匹配的内容才会显示在子下拉列表中,如下所示。由于子下拉列表中存在重复值,因此我们使用Distinct函数删除重复值。
通过设置依赖关系,子下拉列表的 Items 属性具有以下设置。
Filter(Sampledata, Diqu = Dropdown2.Selected.Diqu)
使用Distinct函数,如下所示。
Distinct(Filter(Sampledata, InCharge = Dropdown2.Selected.InCharge),Diqu)
当您运行它时,重复项将被删除并显示,如下所示。
对于依赖设置,如果 数据库列表的列类型是选项,则无法设置。此外,如果父下拉列表为空(如下所示),则子下拉列表中不会显示任何内容。如果父下拉列表为空,您可能希望显示所有选项。下一章将解释如何实现这样的案例。
4-3 缩小范围方法②(个人创作)
让我们尝试下面的 数据库 列表“sampledata”作为数据源的示例。
将父下拉列表设置为“InCharge”列,将子下拉列表设置为“Diqu”列。“InCharge”栏中的类型是一个选择。
因此,使用Choices函数在下拉列表的 Items 属性中显示“Category”列,如下所示。
运行它时,将显示选项,如下所示。
接下来,设置子下拉列表。
设置子下拉列表的 Items 属性,如下所示。
如果父下拉列表为空,子下拉列表将显示所有选项。
如果父下拉列表不为空,则显示按子下拉列表中所选内容过滤的选项。就是行动的意思。
If(IsBlank(Dropdown2.Selected.Value),Distinct(Sampledata,Diqu),Distinct(Filter(Sampledata, InCharge = Dropdown2.Selected.Value),Diqu))
当您运行它并显示下拉列表时,当父下拉列表为空且子下拉列表显示时,将显示所有选项,如下所示。
如果选择父下拉列表,子下拉列表将显示所选内容的选项,如下所示。
4-4 概括
本页介绍了如何实现使用父下拉列表过滤子下拉列表的用户界面。
如果数据源不是特殊格式的列,并且用户界面基于过滤,那么如果能够像步骤 1 中那样轻松设置依赖关系,那就太好了。如果通过依赖设置无法实现这一点,我认为有必要像步骤②那样单独设置它们。