了解 SharePoint 窗体集成
您现在可以在 Power Apps 中轻松自定义任何 Microsoft Lists 或 SharePoint 库窗体。 在本文中,我们将详细演示这些窗体的工作原理,以及如何对其自定义。
如果您已自定义列表窗体,则可能已经注意到默认生成的窗体适用于所有操作,如创建、显示或编辑项。 此操作是借助生成的公式和 SharePointIntegration 控件来实现的。
了解默认生成的窗体
默认生成的窗体包含以下控件及其相应默认值:
FormScreen1 - 这是包含窗体的屏幕。
SharePointForm1 - 这是用于创建、显示或编辑列表项的窗体。
Data Source - 已为其自定义窗体的列表。
Item - 从列表中选定的项。 在 Power Apps Studio 中工作时,为方便起见,这在列表中将设置为 First() 项。
If( IsBlank(SharePointIntegration.Selected) || IsEmpty(SharePointIntegration.Selected), First('*YourListName*'), SharePointIntegration.Selected )
提示
上述公式模式(使用
... SharePointDatasourceName.Selected
)适用于窗体的项目属性。 有关设置 SharePoint 记录值的公式模式,请参阅下面一节。
OnSuccess - 一旦成功创建或保存项,则将重置窗体并且 SharePoint 会隐藏窗体。
ResetForm(SharePointForm1); RequestHide()
SharePointIntegration - 负责在 SharePoint 和 Power Apps 之间沟通用户操作的控件。
Data Source - 已为其自定义窗体的列表。
'YourListName'
OnNew - 在新模式中设置 SharePointForm1。
NewForm(SharePointForm1)
OnView - 在新查看模式中设置 SharePointForm1。
ViewForm(SharePointForm1)
OnEdit - 在新编辑模式中设置 SharePointForm1。
EditForm(SharePointForm1)
OnSave - 提交对 SharePointForm1 所做的更改。 成功提交窗体时,将执行 SharePointForm1.OnSuccess 公式。
SubmitForm(SharePointForm1)
OnCancel - 重置对 SharePointForm1 的更改。 当用户在 SharePoint 中选择取消时,SharePoint 总是会隐藏窗体。
ResetForm(SharePointForm1)
这些默认值可确保窗体能够在 SharePoint 中正常运行,即当用户在 SharePoint 中与窗体交互时,它们会更改 Power Apps 窗体模式,并确保将更改提交到 SharePoint。
了解 SharePointIntegration 控件
SharePointIntegration 控件在 SharePoint 和 Power Apps 之间传达用户操作。
备注
仅当窗体在 SharePoint 中运行时才可访问 SharePointIntegration 控件的属性,并且在 Power Apps Studio 中自定义窗体时无法访问这些属性。 这些属性可能无法在 OnStart 或 OnVisible 中使用。
SharePointIntegration 控件具有以下属性:
Selected - 从列表中选定的项。
OnNew - 当用户在 SharePoint 中选择新建按钮或打开创建项窗体时要执行的操作。
OnView - 当用户在 SharePoint 中选择一个项目或打开项目详细信息窗体时要执行的操作。
OnEdit - 当用户在 SharePoint 中选择编辑所有内容按钮或打开编辑项窗体时要执行的操作。
OnSave - 当用户在 SharePoint 中选择保存按钮时要执行的操作。
OnCancel - 当用户在 SharePoint 中选择取消按钮时要执行的操作。
SelectedListItemID - 列表中选定项的项 ID。
Data Source – 包含窗体将显示、编辑或创建的记录的列表。 如果更改此属性,Selected 和 SelectedItemID 属性可能会停止工作。
自定义默认窗体
至此,已更深入了解默认生成的窗体和 SharePointIntegration 控件,现在可以更改公式来进一步自定义窗体。 下面是自定义窗体时需要注意一些事项:
使用 SharePointIntegration 控件的 OnSave 公式,可自定义用户在 SharePoint 中选择保存时将发生什么行为。 如果有多个窗体,请确保只提交当前正在使用的窗体的更改。
提示
为 OnNew、OnView 和 OnEdit 公式中的变量设置不同的值。 您可以在 OnSave 公式中使用此变量,以确定正在使用的窗体。
请务必在所有窗体的 OnSuccess 公式中添加 RequestHide()。 如果忘记了此操作,SharePoint 将不知道何时隐藏窗体。 此外,避免在调用 RequestHide() 之后运行重要代码,这样所有代码都可以在窗体仍然可见并能够运行逻辑时运行。
当用户在 SharePoint 中选择取消时,您将无法控制窗体的隐藏,因此,请确保在 SharePointIntegration 控件的 OnCancel 公式中重置窗体。
SharePointIntegration 控件的属性可能无法在 OnStart 或 OnVisible 中使用,并且这些事件在加载列表后只执行一次。 可使用 OnNew、OnView 或 OnEdit 公式,在每次向用户显示窗体之前运行逻辑。
SharePointIntegration 对象的常见问题
当
SharepointIntegration.Selected
的值设置为 OnView 属性上的集合时,它不显示最新值。 解决此问题的推荐方法是使用SharepointIntegration.SelectedListItemID
,然后对表执行查找来获取 selectedRecord。例如,对于 OnView 属性:
不使用:
Set( selectedItem, SharePointIntegration.Selected );
使用:
Set( selectedLookupItem, LookUp( YourSharepointIntegrationObject, ID=SharePointIntegration.SelectedListItemID ) );
关闭 Power Apps 窗体时不会重置集合变量,状态在整个会话中保持不变。 这是为什么在有需要重置变量的用例时,应清除 SharePointIntegration 对象的 OnView 属性中变量的原因。
不要在 SharePointIntegration 属性(如 OnNew 和 OnView)中使用命令式函数,如 Launch()。 如果使用,可能会导致意外行为,因为 SharePointIntegration 生命周期事件(如选择更改)可能在后台触发,即使窗体不可见。
另请参见
- EditForm、NewForm、SubmitForm、ResetForm 和 ViewForm 函数 - Power Apps 中的 form 函数
- RequestHide 函数
- SharePoint 集成方案