【问题标题】:Filter a dropdown based on the content of another dropdown in PowerApps根据 PowerApps 中另一个下拉列表的内容过滤下拉列表
【发布时间】:2026-02-16 00:35:01
【问题描述】:

我需要从其上方另一个下拉列表的结果中过滤一个下拉列表。我根据他们各自的机构过滤人员,因此当用户从第一个下拉列表中选择他们的机构时,第二个下拉列表仅填充来自该机构的人员。

Agency 和 Personnel 是公共数据服务 (CDS) 中的两个独立实体(表)。

到目前为止,我可以从 CDS 中获取代理列表

Filter(Agency, AgencyType = 9)

其中 [9] = 我要过滤的代理类型。

我只是无法获得分配给该机构的人员名单来填充。我试过了:

ITEM: Filter(Personnel, ddAgency.Selected.Value in Personnel.AgencyID) 其中 ddAgency 是引用的下拉列表的名称。

我从 PowerApps 收到一个表错误,所以我猜这是我的语法。我正在尝试根据 2 个实体(表)中的值过滤数据并绘制结果。

有什么建议吗?

【问题讨论】:

    标签: dropdown powerapps


    【解决方案1】:

    你可能想要一些类似的东西

    ddPersonnel.Items: Filter(Personnel, AgencyID = ddAgency.Selected.Value)
    

    用于过滤数据源的表达式已经假定您处于被过滤数据源的上下文中,因此您无需指定Personnel.AgencyID - AgencyID 就足够了。

    等号右侧的表达式 (ddAgency.Selected.Value) 可能需要更新,如果具有机构 ID 的列不称为 Value。例如,如果它被称为Id,则表达式将是下面的表达式。

    ddPersonnel.Items: Filter(Personnel, AgencyID = ddAgency.Selected.Id)
    

    您可以将其解读为“过滤数据源Personnel,其中AgencyID 字段的值与下拉列表ddAgency 中选择的Agency 元素的Id 的值相同。

    【讨论】:

    • 这似乎是问题所在,但 PowerApps CDS 定义 AgencyID 的方式存在问题。它是 Agency 表(实体)中的自动编号字段,但 Personnel 表(实体)中的值也是数字,但格式不同。 Personnel 实体格式化数字时不带前导 0,但 AgencyID 是一个自动编号,默认有 5 个前导零。
    • 也许如果您以一种统一两种格式的方式对其进行格式化:Filter(Personnel, Value(AgencyID) = Value(ddAgency.Selected.Id)
    • 对于奖励积分,您将如何连接下拉列表中的 NameLastname 字段? Filter(Search(Personnel.CONCATENATE(Name," ",Lastname)), AgencyID=ddAgency.Selected.PrimaryId) 不起作用。