我正在创建一个 Power Apps Canvas 应用程序。在此应用程序中,我有一个表单,它使用按钮:OnSelect“SubmitForm(Form1)”在 SharePoint 列表中创建项目。这会创建该项目,但我还想附加表格的同意。表数据存储在集合中,我希望将集合中的数据添加到表单刚刚创建的项目中。我在 SharePoint 端有一个名为“表数据”的空列,我需要将集合数据放入该项目列
我尝试过使用补丁功能,但我不知道如何选择刚刚创建的表单的项目。我可以选择正确的 SharePoint 列表,但我不确定如何选择该项目。
要引用使用 Form1 创建的项目,您可以使用
Form1.LastSubmit
。
要将表格数据附加到您的 SP 记录,我想您有 3 个选择:
您有两个基本选择。
首先,正如 @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 列表时,它才会尝试修补表数据。 如果你这样做,我写的任何一个方法仍然有效。