You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Apps画布应用中Gallery控件的依赖控件禁用与自动计算

需求可实现,解决方案如下

1. 初始化集合结构

首先确保你的QAInputCollection包含可关联的标识(比如ID),方便后续跨条目更新。可以在应用启动(App.OnStart)或目标屏幕加载(Screen.OnVisible)时执行以下代码:

Collect(
    QAInputCollection,
    {
        ID: 1,
        Question: "姓名",
        InputType: "Text",
        Answer: ""
    },
    {
        ID: 2,
        Question: "出生日期",
        InputType: "Date",
        Answer: Blank()
    },
    {
        ID: 3,
        Question: "年龄",
        InputType: "Number",
        Answer: Blank()
    }
)

2. 配置Gallery控件

将Gallery的Items属性设置为QAInputCollection,然后在Gallery模板内部添加条件渲染的输入控件:

(1)姓名条目:文本输入框

当当前项ThisItem.InputType = "Text"时,添加TextInput控件:

  • Default属性:ThisItem.Answer
  • OnChange属性:Patch(QAInputCollection, ThisItem, {Answer: Self.Text})

(2)出生日期条目:日期选择器

当当前项ThisItem.InputType = "Date"时,添加DatePicker控件:

  • DefaultDate属性:ThisItem.Answer
  • AllowBlank属性:true(允许初始为空)
  • OnChange属性:
// 计算截至今日的年龄
Set(varAge, DateDiff(Self.SelectedDate, Today(), Years));
// 更新集合中的年龄条目
Patch(
    QAInputCollection,
    LookUp(QAInputCollection, ID = 3),
    {Answer: varAge}
)

(3)年龄条目:数字输入框

当当前项ThisItem.InputType = "Number"时,添加TextInput(或NumberInput)控件:

  • Default属性:ThisItem.Answer
  • Disabled属性:!IsBlank(LookUp(QAInputCollection, ID = 2).Answer)
  • (可选)将输入框设置为只读样式,比如DisplayMode设为If(Self.Disabled, DisplayMode.View, DisplayMode.Edit)

3. 逻辑说明

  • 当用户选择出生日期后,DatePicker的OnChange事件会自动计算年龄并更新集合中“年龄”条目的值。
  • 年龄输入框的Disabled属性通过判断集合中“出生日期”条目的值是否为空,实现依赖禁用:出生日期未填写时可编辑,填写后自动禁用。
  • 若用户修改出生日期,年龄会自动重新计算并更新,同时保持禁用状态。

内容的提问来源于stack exchange,提问作者ajinkya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:47:39