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.AnswerOnChange属性:Patch(QAInputCollection, ThisItem, {Answer: Self.Text})
(2)出生日期条目:日期选择器
当当前项ThisItem.InputType = "Date"时,添加DatePicker控件:
DefaultDate属性:ThisItem.AnswerAllowBlank属性: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.AnswerDisabled属性:!IsBlank(LookUp(QAInputCollection, ID = 2).Answer)- (可选)将输入框设置为只读样式,比如
DisplayMode设为If(Self.Disabled, DisplayMode.View, DisplayMode.Edit)
3. 逻辑说明
- 当用户选择出生日期后,
DatePicker的OnChange事件会自动计算年龄并更新集合中“年龄”条目的值。 - 年龄输入框的
Disabled属性通过判断集合中“出生日期”条目的值是否为空,实现依赖禁用:出生日期未填写时可编辑,填写后自动禁用。 - 若用户修改出生日期,年龄会自动重新计算并更新,同时保持禁用状态。
内容的提问来源于stack exchange,提问作者ajinkya
相关产品推荐
相关产品推荐

