Power Apps重复区域返回查看项目时无法加载数据求助
1. 解析HTML表格为本地集合
核心是把富文本里的结构化HTML表格转换成Power Apps可识别的集合。假设你的SharePoint列表为MainList,当前选中项目是SelectedItem,存储表格的富文本列叫TableData,可以在详情页的OnVisible事件中添加以下代码:
// 提取HTML表格的完整内容 Set(varRawTable, Match(SelectedItem.TableData, "<table.*?</table>", MatchOptions.Contains & MatchOptions.IgnoreCase).FullMatch); // 拆分出所有表格行,去除<tr>标签 Set(varRows, Split(Substitute(Substitute(varRawTable, "<tr>", ""), "</tr>", ""), "</tr><tr>")); // 初始化存储数据的集合 Clear(colTableData); // 遍历每行,拆分单元格并整理成集合 ForAll( varRows, If( !IsBlank(Result) && !Result in ["<thead>","</thead>","<tbody>","</tbody>"], // 过滤表头容器和空行 Collect( colTableData, { Column1: Trim(Substitute(Substitute(First(Split(Result, "</td><td>")).Result, "<td>", ""), "</td>", "")), Column2: Trim(Substitute(Substitute(Last(FirstN(Split(Result, "</td><td>"),2)).Result, "<td>", ""), "</td>", "")), // 按你的表格列数继续添加Column3、Column4... RowID: GUID() // 给每行加唯一ID,方便后续增删操作 } ) ) );
2. 绑定集合到重复区域
将重复控件(比如Gallery)的Items属性设置为colTableData,然后把Gallery内的输入控件和集合字段绑定:
- 第一个文本框
Default:ThisItem.Column1 - 第二个文本框
Default:ThisItem.Column2 - 后续列依次对应集合内的字段
3. 优化保存逻辑(保障解析准确性)
为了避免后续解析出错,保存时要生成结构规范的HTML表格,不要带多余的样式或嵌套标签。比如保存按钮的OnSelect事件代码:
// 生成标准HTML表格字符串 Set( varHTMLTable, "<table><thead><tr><th>列1</th><th>列2</th></tr></thead><tbody>" & Concat( colTableData, "<tr><td>" & Column1 & "</td><td>" & Column2 & "</td></tr>" ) & "</tbody></table>" ); // 将表格Patch到SharePoint富文本列 Patch( MainList, SelectedItem, {TableData: varHTMLTable} );
注意事项
- 如果表格列数更多,需要同步调整解析和拼接代码中的字段数量
- 若富文本包含额外HTML样式(如
<span>、style属性),可在解析时用Substitute清理,比如Substitute(Result, "<span style='color:red'>", "") - 测试时可先输出
varRawTable和varRows的值,确认表格内容提取正确
内容的提问来源于stack exchange,提问作者maicolo
相关产品推荐
相关产品推荐

