Power 应用程序画布:将集合附加到现有 SharePoint 项目

问题描述 投票:0回答:2

我正在创建一个 Power Apps Canvas 应用程序。在此应用程序中,我有一个表单,它使用按钮:OnSelect“SubmitForm(Form1)”在 SharePoint 列表中创建项目。这会创建该项目,但我还想附加表格的同意。表数据存储在集合中,我希望将集合中的数据添加到表单刚刚创建的项目中。我在 SharePoint 端有一个名为“表数据”的空列,我需要将集合数据放入该项目列

我尝试过使用补丁功能,但我不知道如何选择刚刚创建的表单的项目。我可以选择正确的 SharePoint 列表,但我不确定如何选择该项目。

sharepoint powerapps powerapps-canvas powerapps-formula powerapps-collection
2个回答
0
投票

要引用使用 Form1 创建的项目,您可以使用

Form1.LastSubmit

要将表格数据附加到您的 SP 记录,我想您有 3 个选择:

  1. 使用 JSON() 函数对数据进行 json 化。然后可以将其作为文本存储在 SharePoint 中。您无法将其读回 PowerApps,但您可以在 Power Automate 中使用 json。
  2. 您可以使用某种分隔符并将结果保存为分隔文本。这不太可取,但可以在 Power Apps 中某种程度上重用。
  3. 如果您的数据结构允许,您可以与第二个表创建 1-N 关系,以存储表格数据,并使用指向表单提交的外部键。

0
投票

您有两个基本选择。

首先,正如 @mmikesy90 所写,您可以使用 Form1.LastSubmit 来引用您刚刚创建的整个项目(即一条记录)。然后,您可以使用列表的唯一标识符。如果你有一个 id 列,它会像这样:

SubmitForm(Form1);
Patch(SharePointListName, LookUp(SharePointListName, id = Form1.LastSubmit.id), {'Table Data': JSON(TableRecordYouWantToAddToItem)});

这假设您想要将表数据添加为 JSON,这意味着您的共享点列是单行文本列。

请注意,您可以使用 ParseJSON() 函数将其拉回 PowerApps,但至少可以说它很混乱。

如果您在表单中输入的内容是唯一标识符,则第二个选项有效。例如,如果您正在创建 SharePoint 人员列表,并且您知道每个人只会有一个列表项,并且您使用他们的电子邮件地址(或例如用户 ID)作为唯一标识符,你可以这样做:

Set(tempUniqueId, emailAddressDataCardInForm.Update);
SubmitForm(Form1);
Patch(SharePointListName, LookUp(SharePointListName, 'email address' = tempUniqueId), {'Table Data': JSON(TableRecordYouWantToAddToItem)});

这两种方法之间可能存在一些细微的差异。其中之一是,Form1.LastSubmit 返回当前会话中成功提交的最后一条记录的值。因此,如果 SubmitForm 失败,您将无法获取当前的表单信息。这可能很好,因为如果主表单不成功,您不想尝试发送 TableData。另一方面,我不记得如果用户成功提交一个条目然后尝试另一个失败的条目,Form1.LastSubmit 会发生什么。换句话说,Form1.LastSubmit 是否有可能错误地返回较旧的条目?

对于任一选项,我建议您将补丁从 OnSubmit 按钮移至表单的 OnSuccess 字段。这样,只有在表单已成功提交到 SharePoint 列表时,它才会尝试修补表数据。 如果你这样做,我写的任何一个方法仍然有效。

© www.soinside.com 2019 - 2024. All rights reserved.