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

Power Apps:如何遍历重复表格式Gallery的所有用户生成行?

问题:Power Apps重复表格(Repeating Table)遍历问题

我有一个**重复表格(repeating table)**结构的Gallery,包含姓名和邮箱两个文本输入框。用户可点击Gallery外的加号图标生成包含这两个输入框的新行,支持多次点击生成多行。

原本尝试通过ForAll(galleryName.AllItems, [...])遍历每个输入框,将每组姓名和邮箱写入后端SharePoint列表,但发现.AllItems仅遍历Gallery的原始组成成员,与用户实际看到的重复行数量不符(例如生成100行后,galleryName.AllItems仍只返回原始行数)。

最终目标是实现类似以下代码的功能:

ForAll(galleryName.AllItems As gal, // 无效,因为AllItems不符合需求
    Patch('My SharePoint List',
           Defaults('My SharePoint List'),
           {Name: gal.txtInputThatHoldsTheName.Text, Email: gal.txtInputThatHoldsTheEmail.Text}))

解决方案

核心问题在于依赖Gallery的.AllItems属性错误——该属性仅引用Gallery绑定的原始数据源,用户新增的重复行并未同步到原始数据源中。正确的方案是使用**集合(Collection)**作为Gallery的数据源,所有新增、编辑操作直接操作集合,最终遍历集合完成SharePoint写入。

具体实现步骤:

  1. 初始化集合:在App的OnStart或屏幕的OnVisible事件中初始化空集合,用于存储所有重复行数据:
    ClearCollect(colRepeatingRows, {Name: "", Email: ""})
    
  2. 绑定Gallery数据源:将Gallery的Items属性设置为colRepeatingRows。
  3. 绑定输入框数据:把Gallery内的姓名输入框Text属性设为ThisItem.Name,邮箱输入框Text属性设为ThisItem.Email,实现输入与集合的双向同步。
  4. 新增行逻辑:将加号图标的OnSelect事件设置为向集合添加空行:
    Collect(colRepeatingRows, {Name: "", Email: ""})
    
  5. 批量写入SharePoint:直接遍历集合colRepeatingRows执行Patch操作,代码如下:
    ForAll(colRepeatingRows As row,
        Patch('My SharePoint List',
               Defaults('My SharePoint List'),
               {Name: row.Name, Email: row.Email}))
    

额外优化提示:

  • 若需支持删除行,可在Gallery内添加删除按钮,将其OnSelect事件设置为Remove(colRepeatingRows, ThisItem)。
  • 集合会实时同步用户输入,无需额外处理输入框的更新逻辑,可靠性远高于直接操作Gallery控件。

内容的提问来源于stack exchange,提问作者J. Mini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:52:50