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

Power Apps中Gallery2审批时遍历Gallery1匹配行项扣减预算的问题

解决方案

问题根源

你的代码里用了gallery1.Selected,只会指向Gallery1中当前选中的单个行项,无法遍历所有行完成匹配,这就是为什么只能匹配第一个项的原因。

修正代码(按钮OnSelect属性)

把原代码替换为以下逻辑,用ForAll遍历Gallery1的所有行,匹配Gallery2选中项的行后更新余额,同时处理余额不足的情况:

// 处理Gallery2选中的请求项
ForAll(
    // 遍历Gallery1的所有预算行项
    Gallery1.AllItems,
    If(
        // 匹配行项(根据实际字段名调整)
        LineItem.Value = gal_NewBudget_3.Selected.LineItem.Value && 
        !IsBlank(CurrentBalance) && 
        CurrentBalance >= gal_NewBudget_3.Selected.AmountRequested,
        // 匹配成功:扣减余额并更新数据源
        Patch(
            你的预算数据源名称, // 替换为存储Gallery1数据的SharePoint列表名
            ThisRecord,
            {CurrentBalance: CurrentBalance - gal_NewBudget_3.Selected.AmountRequested}
        ),
        // 余额不足或不匹配:标记请求项为超额
        Patch(
            Vouchers,
            gal_NewBudget_3.Selected,
            {ExceededValue: "yes"}
        )
    )
)

关键说明

  • Gallery1.AllItems:遍历Gallery1的所有行项,而非仅选中的单个项
  • ThisRecord:在ForAll循环中代表当前遍历到的Gallery1行项
  • 字段匹配:确保LineItem.Value的对比两边字段类型一致(比如都是查找列的Value属性)
  • 余额判断:将>0改为>=,避免刚好等于请求金额时被误判为余额不足

额外注意事项

  • 若Gallery2允许多选,需把gal_NewBudget_3.Selected改为gal_NewBudget_3.SelectedItems,并在外层再加一层ForAll遍历所有选中的请求项
  • 务必替换代码中的你的预算数据源名称为实际存储Gallery1预算数据的SharePoint列表名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:44:58